13

我有一个包含大约 5000 个条目的距离矩阵,并使用 scipy 的层次聚类方法对矩阵进行聚类。我用于此的代码是以下代码段:

Y = fastcluster.linkage(D, method='centroid') # D-distance matrix
Z1 = sch.dendrogram(Y,truncate_mode='level', p=7,show_contracted=True)

由于所有这些数据的树状图会变得相当密集,因此我使用 truncate_mode 对其进行修剪。所有这些都有效,但我想知道如何找出原始 5000 个条目中哪些属于树状图中的特定分支。

我尝试使用

 leaves = sch.leaves_list(Y)

获取叶子列表,但这使用链接输出作为数据,虽然我可以看到修剪后的树状图和叶子列表之间的对应关系,但手动将原始条目映射到树状图变得有点麻烦。

总结一下:有没有办法列出距离矩阵中属于修剪树状图中分支的所有原始条目?或者还有其他我不知道的方法。

谢谢

4

1 回答 1

3

scipy.cluster.hierarchy.dendrogram 返回的字典数据结构之一具有 key ivl文档描述为:

与叶节点对应的标签列表

您可以提供自定义标签(使用labels=<array of lables>)作为 dendrogram 函数的输入,但默认情况下,它们只是原始观察的索引。通过比较原始标签/索引 和 Z1['ivl'],您可以确定原始条目是什么。

于 2012-07-11T17:09:13.810 回答