10
我正在用相关距离度量(即1-皮尔森相关)对2维矩阵进行层次聚类。我的代码如下(该数据在一个名为“数据”变量):Python中的层次聚类问题
from hcluster import *
Y = pdist(data, 'correlation')
cluster_type = 'average'
Z = linkage(Y, cluster_type)
dendrogram(Z)
我得到的错误是:
ValueError: Linkage 'Z' contains negative distances.
是什么原因导致这个错误?矩阵“数据”,我用很简单:
[[ 156.651968 2345.168618]
[ 158.089968 2032.840106]
[ 207.996413 2786.779081]
[ 151.885804 2286.70533 ]
[ 154.33665 1967.74431 ]
[ 150.060182 1931.991169]
[ 133.800787 1978.539644]
[ 112.743217 1478.903191]
[ 125.388905 1422.3247 ]]
我不知道怎么走1个时pdist所能产生负数 - 皮尔森相关。对此有何想法?
谢谢。
我尝试以下但它没有工作: #使用“相关” Y =剪辑从pdist计算Y(Y,0,1) ,我得到的矩阵I上面表明的聚类是非常奇怪的。任何想法可能发生什么?这只会发生在'关联'作为pdist的参数。 – user248237dfsf 2010-05-31 03:42:25
您可以尝试使用类似'Y [abs(Y)<3e-16] = 0.0'的东西,因为您也有一些非常小的正距离。有时像这样的数字可以真正抛弃。坦率地说,我没有太多的使用聚类模块的经验。它可能与使用'平均'的集群类型可能有关吗? – 2010-05-31 04:20:48