pub use crate::utils::distance::Distance;
pub use crate::utils::kernels::Kernel;
pub use smartcore::neighbors::KNNWeightFunction;
pub use smartcore::algorithm::neighbour::KNNAlgorithmName;
pub use smartcore::ensemble::extra_trees_regressor::ExtraTreesRegressorParameters;
pub use smartcore::ensemble::random_forest_regressor::RandomForestRegressorParameters;
pub use smartcore::xgboost::xgb_regressor::{Objective, XGRegressor, XGRegressorParameters};
pub use smartcore::tree::decision_tree_regressor::DecisionTreeRegressorParameters;
pub use smartcore::linear::elastic_net::ElasticNetParameters;
pub use smartcore::linear::lasso::LassoParameters;
pub use smartcore::linear::linear_regression::LinearRegressionSolverName;
pub use smartcore::linear::linear_regression::LinearRegressionParameters;
pub use smartcore::linear::ridge_regression::RidgeRegressionParameters;
pub use smartcore::linear::ridge_regression::RidgeRegressionSolverName;
pub use smartcore::naive_bayes::bernoulli::BernoulliNBParameters;
pub use smartcore::naive_bayes::gaussian::GaussianNBParameters;
pub use smartcore::naive_bayes::categorical::CategoricalNBParameters;
pub use smartcore::naive_bayes::multinomial::MultinomialNBParameters;
pub use smartcore::ensemble::random_forest_classifier::RandomForestClassifierParameters;
pub use smartcore::linear::logistic_regression::LogisticRegressionParameters;
pub use smartcore::linear::logistic_regression::LogisticRegressionSolverName;
pub use smartcore::tree::decision_tree_classifier::DecisionTreeClassifierParameters;
pub(crate) mod macros;
mod knn_parameters;
pub use knn_parameters::KNNParameters;
pub type KNNRegressorParameters = KNNParameters;
mod svr_parameters;
pub use svr_parameters::SVRParameters;
pub type KNNClassifierParameters = KNNParameters;
mod svc_parameters;
pub use svc_parameters::SVCParameters;
mod classification_settings;
pub use classification_settings::ClassificationSettings;
mod regression_settings;
#[doc(no_inline)]
pub use regression_settings::RegressionSettings;
mod common;
pub use common::{SupervisedSettings, WithSupervisedSettings};
mod clustering_settings;
pub use clustering_settings::{ClusteringAlgorithmName, ClusteringSettings};
use std::fmt::{Display, Formatter};
pub mod error;
pub use error::SettingsError;
#[non_exhaustive]
#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum Metric {
RSquared,
MeanAbsoluteError,
MeanSquaredError,
Accuracy,
None,
}
impl Display for Metric {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
match self {
Self::RSquared => write!(f, "R^2"),
Self::MeanAbsoluteError => write!(f, "MAE"),
Self::MeanSquaredError => write!(f, "MSE"),
Self::Accuracy => write!(f, "Accuracy"),
Self::None => write!(f, "None"),
}
}
}
#[derive(serde::Serialize, serde::Deserialize)]
pub enum PreProcessing {
None,
AddInteractions,
AddPolynomial {
order: usize,
},
ReplaceWithPCA {
number_of_components: usize,
},
ReplaceWithSVD {
number_of_components: usize,
},
}
impl Display for PreProcessing {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
match self {
Self::None => write!(f, "None"),
Self::AddInteractions => write!(f, "Interaction terms added"),
Self::AddPolynomial { order } => {
write!(f, "Polynomial terms added (order = {order})")
}
Self::ReplaceWithPCA {
number_of_components,
} => write!(f, "Replaced with PCA features (n = {number_of_components})"),
Self::ReplaceWithSVD {
number_of_components,
} => write!(f, "Replaced with SVD features (n = {number_of_components})"),
}
}
}
#[derive(serde::Serialize, serde::Deserialize)]
pub enum FinalAlgorithm {
None,
Best,
}