pub mod polynomial;
pub mod standard_scaler;
pub use polynomial::PolynomialFeatures;
pub use standard_scaler::StandardScaler;
use crate::data::Dataset;
use anyhow::Result;
pub trait Preparer {
fn fit(&mut self, _dataset: &Dataset) -> Result<()> {
Ok(())
}
fn apply(&self, dataset: &Dataset) -> Result<Dataset>;
fn run(&mut self, dataset: &Dataset) -> Result<Dataset> {
self.fit(dataset)?;
self.apply(dataset)
}
fn fit_apply(dataset: Dataset) -> Result<Dataset>
where
Self: Default + Sized,
{
let mut preparer = Self::default();
preparer.run(&dataset)
}
}