#![allow(clippy::needless_doctest_main)]
#[path = "../tests/fixtures/classification_data.rs"]
mod classification_data;
use automl::settings::ClassificationSettings;
use automl::settings::{
DecisionTreeClassifierParameters, Distance, FinalAlgorithm, KNNAlgorithmName, KNNParameters,
KNNWeightFunction,
};
use automl::{ClassificationModel, DenseMatrix};
use classification_data::classification_testing_data;
fn main() {
let (x, y) = classification_testing_data();
let settings = ClassificationSettings::default()
.with_number_of_folds(3)
.shuffle_data(true)
.verbose(true)
.with_final_model(FinalAlgorithm::Best)
.with_knn_classifier_settings(
KNNParameters::default()
.with_algorithm(KNNAlgorithmName::CoverTree)
.with_k(3)
.with_distance(Distance::Euclidean)
.with_weight(KNNWeightFunction::Uniform),
)
.with_decision_tree_classifier_settings(
DecisionTreeClassifierParameters::default()
.with_min_samples_split(2)
.with_max_depth(15)
.with_min_samples_leaf(1),
);
let mut model = ClassificationModel::new(x, y, settings);
model.train().unwrap();
println!("{model}");
let preds = model
.predict(DenseMatrix::from_2d_vec(&vec![vec![0.5_f64, 0.5]; 5]).unwrap())
.expect("prediction should succeed");
println!("Predictions: {preds:?}");
}