【发布时间】:2017-12-09 18:25:09
【问题描述】:
我正在使用 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 作为它最近的集群。
我不确定我是否误解了软集群的工作原理,或者代码是否有问题。任何帮助表示赞赏!
【问题讨论】:
-
我不记得 HDBSCAN* 论文中的类似内容了……这有什么理论支持?
-
我认为这是一个相对较新的功能。这里有一个例子:hdbscan.readthedocs.io/en/latest/soft_clustering.html,它是如何工作的解释在这里:hdbscan.readthedocs.io/en/latest/…
-
我指的是已发表的对该方法的理论支持。破解 HDBSCAN* 的一些“模糊”变体很容易,但这并不意味着它在统计上是合理的。
-
是的,我在问了这个问题后提出了这个问题——我根据我的发现重新映射,它对我有用,但基于其他一些 cmets,行为似乎不是一致。
标签: python machine-learning cluster-analysis dbscan unsupervised-learning