(
corr_mat: &DMatrix<f64>,
kept_clusters: &BTreeMap<usize, Vec<usize>>,
top_clusters: &BTreeMap<usize, Vec<usize>>,
)
| 189 | } |
| 190 | |
| 191 | fn improve_clusters( |
| 192 | corr_mat: &DMatrix<f64>, |
| 193 | kept_clusters: &BTreeMap<usize, Vec<usize>>, |
| 194 | top_clusters: &BTreeMap<usize, Vec<usize>>, |
| 195 | ) -> Result<ClusterState, OncError> { |
| 196 | let mut clusters_new: BTreeMap<usize, Vec<usize>> = BTreeMap::new(); |
| 197 | for members in kept_clusters.values() { |
| 198 | clusters_new.insert(clusters_new.len(), members.clone()); |
| 199 | } |
| 200 | for members in top_clusters.values() { |
| 201 | clusters_new.insert(clusters_new.len(), members.clone()); |
| 202 | } |
| 203 | |
| 204 | let mut new_idx = Vec::new(); |
| 205 | for members in clusters_new.values() { |
| 206 | new_idx.extend(members.iter().copied()); |
| 207 | } |
| 208 | |
| 209 | let corr_new = submatrix(corr_mat, &new_idx); |
| 210 | let labels = labels_from_clusters(corr_mat.nrows(), &clusters_new); |
| 211 | let dist = corr_to_distance(corr_mat); |
| 212 | let silh_scores_new = silhouette_samples(&dist, &labels); |
| 213 | |
| 214 | Ok(ClusterState { |
| 215 | ordered_correlation: corr_new, |
| 216 | clusters: clusters_new, |
| 217 | silhouette_scores: silh_scores_new, |
| 218 | }) |
| 219 | } |
| 220 | |
| 221 | fn cluster_kmeans_base( |
| 222 | corr_mat: &DMatrix<f64>, |
no test coverage detected