如何在hdbscan中获取集群层次结构?

问题描述 投票:0回答:1

我有数据点的标签。我的主要目的是在这些标签之间建立层次关系,我们称之为 L。

因此,我执行 hdbscan,我可以使用

clusterer.condensed_tree_.plot()
绘制层次结构树。我可以推断出原始标签(L)和 hdbscan 分配的簇标签之间的映射。但它没有给我树上的集群标签,以便我可以做出有关层次结构的决定。

那么,如何获取集群标签的层次结构信息呢?

data-science hdbscan
1个回答
0
投票

我知道您希望提取原始数据标签与使用 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)

解读隶属度矩阵:

该矩阵的行对应于数据点,列对应于簇。每个值代表数据点属于一个簇的近似概率。

您可以在隶属矩阵上使用层次聚类等聚类算法来基于聚类概率构建层次结构。

可视化:

虽然这两种方法都不会直接将聚类标签分配给树节点,但您可以将层次结构与原始标签一起可视化:

  • 使用 networkx 或 matplotlib 等库绘制树。色标 基于原始标签或其他一些有意义的节点 财产。
  • 给节点标注相关信息,例如cluster 概率或距离

.

其他提示:

两种方法都有权衡:

  • 单联结树对噪声更敏感,而单联结树对噪声更敏感。 由于平均,隶属度矩阵可能会失去分辨率。
  • 考虑您的数据特征和所需的详细程度 选择合适的方法。
  • 探索 scikit-learn.cluster.hierarchy 等库 隶属矩阵上的层次聚类。
  • 像 hdbscan-vis 这样的工具可以提供交互式可视化 HDBSCAN 结果。

通过结合这些方法和可视化,您可以有效地提取和理解原始标签与 HDBSCAN 集群之间的层次关系。

© www.soinside.com 2019 - 2024. All rights reserved.