use wasm_bindgen::prelude::*;
pub fn fit (csv_content: &[u8], dim: i32, num_clusters: i32) -> String {
let data = read_data(csv_content, dim as usize);
let (means, _clusters) = rkm::kmeans_lloyd(&data.view(), num_clusters as usize);
return serde_json::to_string(&means).unwrap();
fn read_data(csv_content: &[u8], dim: usize) -> Array2<f32> {
let mut data_reader = csv::Reader::from_reader(csv_content);
let mut data: Vec<f32> = Vec::new();
for record in data_reader.records() {
for field in record.unwrap().iter() {
let value = f32::from_str(field);
data.push(value.unwrap());
Array2::from_shape_vec((data.len() / dim, dim), data).unwrap()