rust_imbalanced_learn/
lib.rs

1//! # rust-imbalanced-learn
2//!
3//! High-performance resampling techniques for imbalanced datasets in Rust.
4//!
5//! This crate provides a comprehensive suite of algorithms for handling imbalanced
6//! datasets in machine learning applications, with a focus on performance, safety,
7//! and ease of use.
8//!
9//! ## Features
10//!
11//! - **SMOTE** (Synthetic Minority Over-sampling Technique)
12//! - **ADASYN** (Adaptive Synthetic Sampling)
13//! - **RandomUnderSampler** for majority class reduction
14//! - **Comprehensive metrics** for model evaluation
15//! - **Type-safe abstractions** with compile-time guarantees
16//! - **High performance** with SIMD and parallel processing support
17//!
18//! ## Quick Start
19//!
20//! ```rust
21//! use rust_imbalanced_learn::prelude::*;
22//! use ndarray::{Array1, Array2};
23//!
24//! // Create sample imbalanced dataset
25//! let x = Array2::from_shape_vec((4, 2), vec![
26//!     1.0, 2.0,
27//!     2.0, 3.0,
28//!     3.0, 4.0,
29//!     10.0, 11.0,
30//! ]).unwrap();
31//! let y = Array1::from_vec(vec![0, 0, 0, 1]);
32//!
33//! // Apply SMOTE resampling
34//! let smote = SmoteStrategy::new(2);
35//! let config = SmoteConfig::default();
36//! let (x_resampled, y_resampled) = smote.resample(x.view(), y.view(), &config).unwrap();
37//!
38//! println!("Original samples: {}", y.len());
39//! println!("Resampled samples: {}", y_resampled.len());
40//! ```
41//!
42//! ## Architecture
43//!
44//! The library is organized into focused modules:
45//!
46//! - [`core`] - Core traits and abstractions
47//! - [`sampling`] - Resampling algorithms (SMOTE, ADASYN, etc.)
48//! - [`ensemble`] - Ensemble methods for imbalanced data
49//! - [`metrics`] - Evaluation metrics and reports
50//!
51//! ## Performance
52//!
53//! Built with performance in mind:
54//! - Zero-cost abstractions
55//! - SIMD acceleration support
56//! - Parallel processing with Rayon
57//! - Memory-efficient algorithms
58//! - Type-safe compile-time optimizations
59
60#![deny(missing_docs)]
61#![warn(clippy::all, clippy::pedantic)]
62#![allow(clippy::module_name_repetitions)]
63
64/// Re-export of imbalanced-core for core traits and abstractions
65pub use imbalanced_core as core;
66
67/// Re-export of imbalanced-sampling for resampling algorithms
68pub use imbalanced_sampling as sampling;
69
70/// Re-export of imbalanced-ensemble for ensemble methods
71pub use imbalanced_ensemble as ensemble;
72
73/// Re-export of imbalanced-metrics for evaluation metrics
74pub use imbalanced_metrics as metrics;
75
76/// Convenient prelude that imports commonly used items
77pub mod prelude {
78    pub use crate::core::prelude::*;
79    pub use crate::sampling::prelude::*;
80    pub use crate::ensemble::prelude::*;
81    pub use crate::metrics::prelude::*;
82    
83    // Re-export config types for convenience
84    pub use crate::sampling::{
85        smote::SmoteConfig,
86        adasyn::AdasynConfig,
87        random_undersampler::RandomUnderSamplerConfig,
88    };
89}