use crate::matrix::FdMatrix;
pub mod cluster;
pub mod covariance;
pub mod em;
pub mod init;
#[cfg(test)]
mod tests;
#[derive(Clone, Copy, Debug, PartialEq)]
#[non_exhaustive]
pub enum CovType {
Full,
Diagonal,
}
#[derive(Debug, Clone)]
#[non_exhaustive]
pub struct GmmResult {
pub cluster: Vec<usize>,
pub membership: FdMatrix,
pub means: Vec<Vec<f64>>,
pub covariances: Vec<Vec<f64>>,
pub weights: Vec<f64>,
pub log_likelihood: f64,
pub bic: f64,
pub icl: f64,
pub iterations: usize,
pub converged: bool,
pub k: usize,
pub d: usize,
}
#[derive(Debug, Clone)]
#[non_exhaustive]
pub struct GmmClusterResult {
pub best: GmmResult,
pub bic_values: Vec<(usize, f64)>,
pub icl_values: Vec<(usize, f64)>,
}
pub use cluster::{gmm_cluster, gmm_cluster_with_config, predict_gmm, GmmClusterConfig};
pub use em::gmm_em;