Skip to main content

scry_learn/preprocess/
mod.rs

1// SPDX-License-Identifier: MIT OR Apache-2.0
2//! Data preprocessing transformers.
3//!
4//! Provides scalers, encoders, dimensionality reduction, and a
5//! composable [`Transformer`] trait for building preprocessing pipelines.
6
7mod column_transformer;
8mod encoder;
9mod imputer;
10mod normalizer;
11mod one_hot;
12mod pca;
13mod polynomial;
14mod scaler;
15
16pub use column_transformer::ColumnTransformer;
17pub use encoder::LabelEncoder;
18pub use imputer::{SimpleImputer, Strategy};
19pub use normalizer::{Norm, Normalizer};
20pub use one_hot::{DropStrategy, OneHotEncoder, UnknownStrategy};
21pub use pca::Pca;
22pub use polynomial::PolynomialFeatures;
23pub use scaler::{MinMaxScaler, RobustScaler, StandardScaler};
24
25use crate::dataset::Dataset;
26use crate::error::Result;
27
28/// A data transformer that can be fitted on a dataset and applied to transform it.
29pub trait Transformer {
30    /// Learn parameters from the training data.
31    fn fit(&mut self, data: &Dataset) -> Result<()>;
32
33    /// Apply the learned transformation to a dataset (in-place).
34    fn transform(&self, data: &mut Dataset) -> Result<()>;
35
36    /// Convenience: fit + transform in one call.
37    fn fit_transform(&mut self, data: &mut Dataset) -> Result<()> {
38        self.fit(data)?;
39        self.transform(data)
40    }
41
42    /// Reverse the transformation (if invertible).
43    fn inverse_transform(&self, data: &mut Dataset) -> Result<()>;
44}