gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 17:34:49 25 4
gpt4 key购买 nike

我有一个包含大约 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)

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

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

谢谢

最佳答案

scipy.cluster.hierarchy.dendrogram 返回的字典数据结构之一具有键 ivl , 即 documentation描述为:

a list of labels corresponding to the leaf nodes

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

关于python - 在 scipy 中修剪树状图(层次聚类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10305111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com