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

what is the meaning of the return values of the scipy.cluster.hierarchy.linkage?

假设我们有如下的 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.        ]]

返回值的含义是什么?

虽然这有 been answered before,但这是一个 "read the docs" 的答案。我认为稍微解释一下文档很有用。

从文档中,我们读到:

An (n−1) by 4 matrix Z is returned. At the i-th iteration, clusters with indices Z[i, 0] and Z[i, 1] are combined to form cluster n + i. A cluster with an index less than n corresponds to one of the n original observations. The distance between clusters Z[i, 0] and Z[i, 1] is given by Z[i, 2]. The fourth value Z[i, 3] represents the number of original observations in the newly formed cluster.

我认为令人困惑的部分是前 n 个集群是单例 ("original observations")。所以 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。