scipy.cluster.hierarchy.linkage的返回值是什么意思?

时间:2016-06-08 20:38:33

标签: python scipy hierarchical-clustering

假设我们有如下的X矩阵:

[[9 0]
[1 4]
[2 3]
[8 5]]

然后,

from scipy.cluster.hierarchy import linkage
Z = linkage(X, method="ward")
print(Z)

返回矩阵如下:

[[  1.           2.           1.41421356   2.        ]
 [  0.           3.           5.09901951   2.        ]
 [  4.           5.          10.           4.        ]]

返回值的含义是什么?

1 个答案:

答案 0 :(得分:4)

虽然这有been answered before,但这是一个“阅读文档”的答案。我认为稍微解释一下这些文档很有用。

从文档中我们读到:

  

返回(n-1)乘4矩阵Z.在第i次迭代中,聚类   将索引Z [i,0]和Z [i,1]组合以形成簇n + i。一个   索引小于n的簇对应于n个原始中的一个   观察结果。簇Z [i,0]和Z [i,1]之间的距离是   由Z [i,2]给出。第四个值Z [i,3]表示数量   在新形成的集群中的原始观察。

我认为令人困惑的部分是前n个星团是单身(“原始观察”)。所以Z中的第一个值实际上是第n + 1个聚类。它是第一个组合两个单身人士的集群。

所以在你的例子中,Z [0]是第4 + 1簇。我们有

 Z[0] = [  1.           2.           1.41421356   2.        ]

前两个值告诉我们哪些簇用于创建簇Z [0]。它们是cluster_1,单例[1,4]和cluster_2,单例[2,3]。

第三个值给出了簇之间的距离。我们可以验证sqrt((2-1)^ 2 +(3-4)^ 2))= 1.41 ...

第四个值告诉我们群集Z [0]中有多少单身。

所以看看你的最后一个星团Z [2],我们看到它结合了Z中的第一个两个星团。它们中的每一个都包含两个独特的单体,所以Z [2,3] = 4。