kmeans/src/lib.rs
Thomas Forgione 164d15c6e7
Cleaning
2018-02-20 14:54:40 +01:00

28 lines
542 B
Rust

pub mod kmeans;
pub mod clusterable;
pub use kmeans::Kmeans;
pub use clusterable::Clusterable;
pub enum Error {
IterationsLimitExceeded,
}
pub fn kmeans<T: Clusterable>(centroids: Vec<T>, data: Vec<T>, max_iterations: usize)
-> Result<(Kmeans<T>, usize), Error> {
let mut kmeans = Kmeans::new(centroids, data);
for nb_iterations in 0..max_iterations {
let stable = kmeans.iterate();
if stable {
return Ok((kmeans, nb_iterations));
}
}
Err(Error::IterationsLimitExceeded)
}