我有数据点的标签。我的主要目的是在这些标签之间建立层次关系,我们称之为 L。
因此,我执行 hdbscan,我可以使用
clusterer.condensed_tree_.plot()
绘制层次结构树。我可以推断出原始标签(L)和 hdbscan 分配的簇标签之间的映射。但它没有给我树上的集群标签,以便我可以做出有关层次结构的决定。
那么,如何获取集群标签的层次结构信息呢?
我知道您希望提取原始数据标签与使用 HDBSCAN 获得的集群标签之间的层次关系。您可以使用以下两种方法:
1。利用 HDBSCAN 的 single_linkage_tree_:
检索单链接树:
single_linkage_tree = hdbscan.single_linkage_tree_.to_numpy()
解读树:
single_linkage_tree 数组中的每一行代表单链接聚类过程中的一个合并步骤。前两列表示正在合并的簇的索引,第三列给出它们之间的距离。
您可以递归地遍历树,从叶节点(原始数据点)开始,沿着父指针(前两列中的索引)重建层次结构。
2。使用 hdbscan.get_approximate_membership:
获取近似隶属度矩阵:
membership_matrix = hdbscan.get_approximate_membership(hdbscan)
解读隶属度矩阵:
该矩阵的行对应于数据点,列对应于簇。每个值代表数据点属于一个簇的近似概率。
您可以在隶属矩阵上使用层次聚类等聚类算法来基于聚类概率构建层次结构。
可视化:
虽然这两种方法都不会直接将聚类标签分配给树节点,但您可以将层次结构与原始标签一起可视化:
.
其他提示:
两种方法都有权衡:
通过结合这些方法和可视化,您可以有效地提取和理解原始标签与 HDBSCAN 集群之间的层次关系。