use crate::metrics::distance::Metric;
use crate::{ClusteringError, Result};
use ndarray::{Array1, Array2, ArrayView1, ArrayView2};
pub fn silhouette_score(
data: &ArrayView2<f64>,
labels: &ArrayView1<usize>,
metric: &Metric,
) -> Result<f64> {
unimplemented!("silhouette_score")
}
pub fn davies_bouldin_score(data: &ArrayView2<f64>, labels: &ArrayView1<usize>) -> Result<f64> {
unimplemented!("davies_bouldin_score")
}
pub fn calinski_harabasz_score(data: &ArrayView2<f64>, labels: &ArrayView1<usize>) -> Result<f64> {
unimplemented!("calinski_harabasz_score")
}
pub fn dunn_index(
data: &ArrayView2<f64>,
labels: &ArrayView1<usize>,
metric: &Metric,
) -> Result<f64> {
unimplemented!("dunn_index")
}
pub fn adjusted_rand_index(
true_labels: &ArrayView1<usize>,
pred_labels: &ArrayView1<usize>,
) -> Result<f64> {
unimplemented!("adjusted_rand_index")
}
pub fn adjusted_mutual_info(
true_labels: &ArrayView1<usize>,
pred_labels: &ArrayView1<usize>,
) -> Result<f64> {
unimplemented!("adjusted_mutual_info")
}
pub fn normalized_mutual_info(
true_labels: &ArrayView1<usize>,
pred_labels: &ArrayView1<usize>,
) -> Result<f64> {
unimplemented!("normalized_mutual_info")
}
pub fn fowlkes_mallows_score(
true_labels: &ArrayView1<usize>,
pred_labels: &ArrayView1<usize>,
) -> Result<f64> {
unimplemented!("fowlkes_mallows_score")
}
pub fn homogeneity_score(
true_labels: &ArrayView1<usize>,
pred_labels: &ArrayView1<usize>,
) -> Result<f64> {
unimplemented!("homogeneity_score")
}
pub fn completeness_score(
true_labels: &ArrayView1<usize>,
pred_labels: &ArrayView1<usize>,
) -> Result<f64> {
unimplemented!("completeness_score")
}
pub fn v_measure_score(
true_labels: &ArrayView1<usize>,
pred_labels: &ArrayView1<usize>,
) -> Result<f64> {
unimplemented!("v_measure_score")
}
pub fn clustering_stability(
data: &ArrayView2<f64>,
algorithm: &dyn ClusteringAlgorithm,
n_bootstraps: usize,
) -> Result<f64> {
unimplemented!("clustering_stability")
}
pub trait ClusteringAlgorithm {
fn fit_predict(&self, data: &ArrayView2<f64>) -> Result<Array1<usize>>;
}