我正在通过相关距离度量(即1 - Pearson相关)对二维矩阵进行分层聚类.我的代码如下(数据在一个名为"data"的变量中):
from hcluster import *
Y = pdist(data, 'correlation')
cluster_type = 'average'
Z = linkage(Y, cluster_type)
dendrogram(Z)
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
ValueError: Linkage 'Z' contains negative distances.
Run Code Online (Sandbox Code Playgroud)
是什么导致这个错误?我使用的矩阵"数据"很简单:
[[ 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 ]]
Run Code Online (Sandbox Code Playgroud)
我没有看到pdist在采用1 - pearson相关时如何产生负数.有什么想法吗?
谢谢.
我有一个通过运行创建的向量列表:
import hcluster
import numpy as np
from ete2 import Tree
vecs = [np.array(i) for i in document_list]
Run Code Online (Sandbox Code Playgroud)
其中document_list是我正在分析的Web文档的集合.然后我执行分层聚类:
Z = hcluster.linkage(vecs, metric='cosine')
Run Code Online (Sandbox Code Playgroud)
这会生成一个ndarray,例如:
[[ 12. 19. 0. 1. ]
[ 15. 21. 0. 3. ]
[ 18. 22. 0. 4. ]
[ 3. 16. 0. 7. ]
[ 8. 23. 0. 6. ]
[ 5. 27. 0. 6. ]
[ 1. 28. 0. 7. ]
[ 0. 21. 0. 2. ]
[ 5. 29. 0.18350472 2. ]
[ 2. …Run Code Online (Sandbox Code Playgroud)