我正在通过相关距离度量(即 1 - Pearson 相关)对二维矩阵进行层次聚类。我的代码如下(数据在一个名为“数据”的变量中):
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 ]]
我看不出 pdist 在采用 1 - PIL 逊相关系数时怎么会产生负数。对此有什么想法吗?
谢谢。
最佳答案
有一些可爱的浮点问题正在发生。如果查看 pdist 的结果,您会发现其中有非常小的负数 (-2.22044605e-16)。本质上,它们应该为零。如果你愿意,你可以使用 numpy 的 clip 函数来处理它。
关于python - Python中的层次聚类问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2940644/