标签: hcluster

Python中的层次聚类问题

我正在通过相关距离度量(即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相关时如何产生负数.有什么想法吗?

谢谢.

python numpy machine-learning scipy hcluster

10
推荐指数
1
解决办法
2226
查看次数

将hcluster生成的ndarray转换为Newick字符串,以便与ete2包一起使用

我有一个通过运行创建的向量列表:

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)

python numpy dendrogram hcluster etetoolkit

5
推荐指数
1
解决办法
2072
查看次数