Я получаю мягкие кластеры из набора данных с помощью HDBSCAN следующим образом:
clusterer = hdbscan.HDBSCAN(min_cluster_size=10, prediction_data=True)
clusterer.fit(data)
soft_clusters = hdbscan.all_points_membership_vectors(clusterer)
closest_clusters = [np.argmax(x) for x in soft_clusters]
soft_clusters
— это двумерный массив вероятностей того, что точка данных принадлежит каждому кластеру, поэтому closest_clusters
должен быть массивом с меткой, которой точка данных, скорее всего, принадлежит. Однако, когда я сравниваю closest_clusters
с clusterer.labels_
(метка, которую HDBSCAN присваивает точке данных), я обнаруживаю, что почти ни один из кластеров не совпадает с точками данных, имеющими метку, то есть точка данных с меткой 3 имеет 4 ближайших кластер.
Я не уверен, что я неправильно понимаю, как работает мягкая кластеризация, или что-то не так с кодом. Любая помощь приветствуется!