07_knn/
07_knn.rs

1use mlinrust::dataset::{Dataset, FromPathDataset, DatasetName};
2use mlinrust::model::knn::{KNNAlg, KNNModel, KNNWeighting};
3use mlinrust::utils::evaluate;
4
5fn main() {
6
7    let path = ".data/MobilePhonePricePredict/train.csv";
8
9    let dataset = Dataset::<usize>::from_name(path, DatasetName::MobilePhonePricePredictDataset, None);
10    let mut temp =  dataset.split_dataset(vec![0.8, 0.2], 0);
11    let (train_dataset, test_dataset) = (temp.remove(0), temp.remove(0));
12
13    println!("train {} : test {}", train_dataset.len(), test_dataset.len());
14
15    let model = KNNModel::new(KNNAlg::KdTree, 16, Some(KNNWeighting::Distance), train_dataset, Some(2));
16    println!("model training done!");
17
18    let (correct, acc) = evaluate(&test_dataset, &model);
19    println!("evaluate results\ncorrect {correct} / total {}, acc = {acc:.5}", test_dataset.len());
20}