Python 层次聚类不一致:不一致的输出是什么意思

Python Hierarchical Clustering Inconsistency: What do the outputs for the inconsistent mean

我正在努力学习如何使用 scipy.cluster.hierarchy.inconsistent。我从 document and this one 知道第一列和第二列分别代表均值和标准差;第三个是链接数,第四个是不一致系数。
但是,我不明白的是:

  1. 计算中包含的所有链接到底是什么意思?
  2. scipy.hierarchy.cluster.inconsistent(Z, d=2)d参数到底有什么作用?

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

[[2], [8], [0], [4], [1], [9], [9], [0]]

然后,通过

得到Z值
Z = linkage(X, 'single')

然后,我们得到

[[  2.   7.   0.   2.]
 [  5.   6.   0.   2.]
 [  0.   4.   1.   2.]
 [  8.  10.   1.   4.]
 [  1.   9.   1.   3.]
 [  3.  11.   2.   5.]
 [ 12.  13.   4.   8.]]

最后,得到不一致

inconsistent(Z)

输出为

[[ 0.       0.       1.       0.     ]
 [ 0.       0.       1.       0.     ]
 [ 1.       0.       1.       0.     ]
 [ 0.66667  0.57735  3.       0.57735]
 [ 0.5      0.70711  2.       0.70711]
 [ 1.5      0.70711  2.       0.70711]
 [ 2.33333  1.52753  3.       1.09109]]

对于第四行,分别用哪三个环节计算均值和标准差得到0.666670.57735的值到底是什么?

[ 0.66667  0.57735  3.       0.57735]

首先你要了解Z矩阵:

[[  2.   7.   0.   2.] <== x[2] is linked with x[7], forming cluster x[8] = {x[2], x[7]}
 [  5.   6.   0.   2.]
 [  0.   4.   1.   2.] <== x[10] = {x[0], x[4]}
 [  8.  10.   1.   4.] <== x[11] = {x[8], x[10]} = {x[2], x[7], x[0], x[4]}
 [  1.   9.   1.   3.]
 [  3.  11.   2.   5.]
 [ 12.  13.   4.   8.]]

第四行的计算中包含了3个link:

|     Link       | Height/Distance |
| x[2] - x[7]    |   Z[0,2] = 0    |
| x[0] - x[4]    |   Z[2,2] = 1    |
| x[8] - x[10]   |   Z[3,2] = 1    |

(1,1,0)的平均值为R[3,0] = 0.66667,标准差为R[3,1] = 0.57735(归一化为N-1,而非N)。不一致的值计算为:

           Z[i,2] - R[i,0]      1 - 0.6667
R[i,3]  =  ---------------  =   ----------  =  0.57735
              R[i,1]             0.57735
  1. what does the all the links included in the calculation really mean?
  2. what does the d parameter of scipy.hierarchy.cluster.inconsistent(Z, d=2) really do?

对于集群 C,集群 C 下面的所有 link,直到深度 d,都被视为计算统计数据(均值和标准差)。在上面的示例中,d=2 表示我们查看创建 x[11](深度 1)的 link,以及 x[8] 和 x[10](深度 2)下方的 links ).