1 unstable release
new 0.1.0-alpha.1 | Apr 12, 2025 |
---|
#1174 in Machine learning
1MB
17K
SLoC
scirs2-transform
This crate provides data transformation utilities for the SciRS2 library, designed to mimic the functionality of scikit-learn's preprocessing and decomposition modules.
Features
Data Normalization and Standardization
- Min-max scaling
- Z-score standardization (mean 0, std 1)
- Max-absolute scaling
- L1 and L2 normalization
- Normalizer class for fitting and transforming
use ndarray::array;
use scirs2_transform::normalize::{normalize_array, NormalizationMethod};
// Normalize columns using min-max normalization
let data = array![[1.0, 2.0, 3.0],
[4.0, 5.0, 6.0],
[7.0, 8.0, 9.0]];
let normalized = normalize_array(&data, NormalizationMethod::MinMax, 0).unwrap();
// Using the Normalizer for fit-transform workflows
let mut normalizer = Normalizer::new(NormalizationMethod::ZScore, 0);
let train_data = normalizer.fit_transform(&training_data).unwrap();
let test_data = normalizer.transform(&test_data).unwrap();
Feature Engineering
- Polynomial features generation
- Binarization
- Discretization (equal-width and equal-frequency binning)
- Power transformations (Box-Cox and Yeo-Johnson)
- Log transformations
use ndarray::array;
use scirs2_transform::features::{PolynomialFeatures, binarize};
// Generate polynomial features
let data = array![[1.0, 2.0], [3.0, 4.0]];
let poly = PolynomialFeatures::new(2, false, true);
let poly_features = poly.transform(&data).unwrap();
// Binarize features with a threshold
let data = array![[1.0, -1.0, 2.0], [2.0, 0.0, -3.0]];
let binary = binarize(&data, 0.0).unwrap();
Dimensionality Reduction
- Principal Component Analysis (PCA)
- Truncated Singular Value Decomposition (SVD)
- Linear Discriminant Analysis (LDA)
use ndarray::array;
use scirs2_transform::reduction::PCA;
// Reduce dimensionality with PCA
let data = array![[1.0, 2.0, 3.0],
[4.0, 5.0, 6.0],
[7.0, 8.0, 9.0],
[10.0, 11.0, 12.0]];
let mut pca = PCA::new(2, true, false);
let reduced = pca.fit_transform(&data).unwrap();
// Access explained variance ratio
let explained_variance = pca.explained_variance_ratio().unwrap();
println!("Explained variance ratio: {:?}", explained_variance);
Usage
Add this to your Cargo.toml
:
[dependencies]
scirs2-transform = "0.1.0"
Examples
See the documentation for detailed examples of each transformation.
License
This project is licensed under the same license as the SciRS2 library.
Dependencies
~7.5MB
~132K SLoC