Python分层聚类不一致:不一致的输出意味着什么

时间:2017-10-30 17:59:04

标签: python scipy hierarchy

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

  1. 计算中包含的所有链接的真正含义是什么?
  2. scipy.hierarchy.cluster.inconsistent(Z,d = 2) d参数真的有用吗?
  3. 例如,假设我们有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.66667 0.57735 的值?

    [ 0.66667  0.57735  3.       0.57735]
    

1 个答案:

答案 0 :(得分:2)

首先你必须了解Z矩阵:

#refs

第四行的计算中包含3个链接:

[[  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.]]

(1,1,0)的平均值是| 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 | ,标准差是R[3,0] = 0.66667(由N-1归一化,而不是N)。不一致的值计算如下:

R[3,1] = 0.57735
  
      
  1. 计算中包含的所有链接到底意味着什么?
  2.   
  3. scipy.hierarchy.cluster.inconsistent(Z,   d = 2)真的吗?
  4.   

对于集群C,集群C下方的所有链接(深度d)都被视为计算统计数据(mean和std)。在上面的例子中,d = 2表示我们查看创建x [11](深度1)的链接,以及x [8]和x [10](深度2)下面的链接。