use rm::linalg::Matrix; use rm::learning::dbscan::DBSCAN; use rm::learning::UnSupModel; #[test] fn test_basic_clusters() { let inputs = Matrix::new(6, 2, vec![1.0, 2.0, 1.1, 2.2, 0.9, 1.9, 1.0, 2.1, -2.0, 3.0, -2.2, 3.1]); let mut model = DBSCAN::new(0.5, 2); model.train(&inputs).unwrap(); let clustering = model.clusters().unwrap(); assert!(clustering.data().iter().take(4).all(|x| *x == Some(0))); assert!(clustering.data().iter().skip(4).all(|x| *x == Some(1))); } #[test] fn test_basic_prediction() { let inputs = Matrix::new(6, 2, vec![1.0, 2.0, 1.1, 2.2, 0.9, 1.9, 1.0, 2.1, -2.0, 3.0, -2.2, 3.1]); let mut model = DBSCAN::new(0.5, 2); model.set_predictive(true); model.train(&inputs).unwrap(); let new_points = Matrix::new(2,2, vec![1.0, 2.0, 4.0, 4.0]); let classes = model.predict(&new_points).unwrap(); assert!(classes[0] == Some(0)); assert!(classes[1] == None); }