use std::collections::HashMap;
#[derive(Debug, Clone, PartialEq)]
pub enum ClusteringAlgorithm {
KMeans { k: usize, max_iterations: usize },
Hierarchical {
linkage: LinkageType,
distance_threshold: f64,
},
DBSCAN { eps: f64, min_samples: usize },
Spectral { k: usize, sigma: f64 },
GaussianMixture {
components: usize,
max_iterations: usize,
},
MeanShift { bandwidth: f64 },
AffinityPropagation { damping: f64, max_iterations: usize },
Custom {
name: String,
parameters: HashMap<String, f64>,
},
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum LinkageType {
Single,
Complete,
Average,
Ward,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum DistanceMetric {
Euclidean,
Manhattan,
Hamming,
Cosine,
Jaccard,
Custom { name: String },
}