在scipy中修剪树状图(层次聚类)

use*_*607 13 python hierarchical-clustering

我有一个约5000个条目的距离矩阵,并使用scipy的层次聚类方法来聚类矩阵.我用于此的代码是以下代码段:

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

由于树形图将变得相当密集所有这些数据,我使用truncate_mode来修剪它.所有这些都有效,但我想知道如何找出原始5000个条目中哪个属于树形图中的特定分支.

我试过用

 leaves = sch.leaves_list(Y)
Run Code Online (Sandbox Code Playgroud)

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

总结一下:有没有办法列出属于修剪树形图中分支的距离矩阵中的所有原始条目?或者还有其他方法可以做到这一点,我不知道.

谢谢

Dha*_*ara 3

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

与叶节点对应的标签列表

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