use ndarray::Array2;
use crate::{Error, Result};
#[derive(Clone, Debug, PartialEq)]
pub struct CentroidModel {
pub centroids: Array2<f64>,
}
impl CentroidModel {
pub fn new(centroids: Array2<f64>) -> Result<Self> {
if centroids.nrows() == 0
|| centroids.ncols() == 0
|| centroids.iter().any(|value| !value.is_finite())
{
return Err(Error::InvalidModel(
"centroids must be non-empty and finite".into(),
));
}
Ok(Self { centroids })
}
#[must_use]
pub fn n_features(&self) -> usize {
self.centroids.ncols()
}
}