问题
Let assume that we have X matrix as follows:
[[9 0]
[1 4]
[2 3]
[8 5]]
Then,
from scipy.cluster.hierarchy import linkage
Z = linkage(X, method="ward")
print(Z)
The returning matrix is follows:
[[ 1. 2. 1.41421356 2. ]
[ 0. 3. 5.09901951 2. ]
[ 4. 5. 10. 4. ]]
What is the meaning of the returning values?
回答1:
Although this has been answered before, it was a "read the docs" answer. I think it is useful to explain the docs a bit.
From the docs, we read that:
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.
I think the confusing part is the the first n clusters are singletons ("original observations"). So the first value in Z actually the n+1'th cluster. It is the first cluster to combine two singletons.
So in your example, Z[0] is the 4+1'th cluster. We have
Z[0] = [ 1. 2. 1.41421356 2. ]
The first two values tell us which clusters were used to create cluster Z[0]. They are cluster_1, the singleton [1,4], and cluster_2, the singleton [2, 3].
The third value gives us the distance between the clusters. We can verify that sqrt((2-1)^2 + (3-4)^2)) = 1.41...
The fourth value tells us how many singletons are in cluster Z[0].
So looking at your last cluster, Z[2], we see that is combines the firs two clusters in Z. Each of them contains two unique singletons, so the Z[2,3] = 4.
来源:https://stackoverflow.com/questions/37712465/what-is-the-meaning-of-the-return-values-of-the-scipy-cluster-hierarchy-linkage