| | |
| | | import scipy |
| | | import torch |
| | | import sklearn |
| | | import hdbscan |
| | | import numpy as np |
| | | |
| | | from sklearn.cluster._kmeans import k_means |
| | |
| | | self.min_samples = min_samples |
| | | self.min_cluster_size = min_cluster_size |
| | | self.metric = metric |
| | | import hdbscan |
| | | self.hdbscan = hdbscan |
| | | |
| | | def __call__(self, X): |
| | | from umap.umap_ import UMAP |
| | | import umap.umap_ as umap |
| | | umap_X = umap.UMAP( |
| | | n_neighbors=self.n_neighbors, |
| | | min_dist=0.0, |
| | | n_components=min(self.n_components, X.shape[0] - 2), |
| | | metric=self.metric, |
| | | ).fit_transform(X) |
| | | labels = hdbscan.HDBSCAN( |
| | | labels = self.hdbscan.HDBSCAN( |
| | | min_samples=self.min_samples, |
| | | min_cluster_size=self.min_cluster_size, |
| | | allow_single_cluster=True).fit_predict(umap_X) |