python - Python中的层次聚类问题

标签 python numpy machine-learning scipy hcluster

我正在通过相关距离度量(即 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/

相关文章:

python - 检查输入 : expected dense_input to have shape (21, 时出错)但得到形状为 (1,) 的数组

python - Django 应用自定义用户权限

用于与 Zaber TLSR300B 通信的 Python、pyserial 程序

python - TensorFlow MTCNN 模型可以转换为 TensorFlow Lite 格式吗?

Python Flask-Restful POST 不采用 JSON 参数

python - 导入错误 : No module named arff

Python:64 位 Numpy?

python - 如何仅更改 numpy 数组字典中的一个值

python - Numpy 在数字末尾截零

python - 有选择地迭代张量