| 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); |
| } |