(m: &Matrix<T>, labels: &Vec<L>, example: &[T], k: usize, df: D)
| 59 | } |
| 60 | |
| 61 | pub fn classify<T, L, D>(m: &Matrix<T>, labels: &Vec<L>, example: &[T], k: usize, df: D) -> L |
| 62 | where T: Float, L: Clone + Ord, D: Fn(&[T], &[T]) -> T { |
| 63 | |
| 64 | let idx = scan(&m, example, k, df).unwrap(); |
| 65 | |
| 66 | let mut targets: Vec<L> = idx.iter().map(|pos| labels.get(*pos).unwrap()).cloned().collect(); |
| 67 | targets.sort_by(|a, b| a.cmp(&b)); |
| 68 | let mut r = group(&targets); |
| 69 | r.sort_by(|a, b| a.1.cmp(&b.1)); |
| 70 | |
| 71 | r.last().unwrap().0.clone() |
| 72 | } |
| 73 | |
| 74 | |
| 75 | #[cfg(test)] |