我正在尝试在 python 中使用 hcluster 库。我没有足够的 Python 知识在 hcluster 中使用稀疏矩阵。请任何人帮助我。所以,我在做什么:
import os.path
import numpy
import scipy
import scipy.io
from hcluster import squareform, pdist, linkage, complete
from hcluster.hierarchy import linkage, from_mlab_linkage
from numpy import savetxt
from StringIO import StringIO
data.dmp 包含的矩阵如下:
A B C D
A 0 1 0 1
B 1 0 0 1
C 0 0 0 0
D 1 1 0 0
并且只包含矩阵的右上部分。我不知道如何正确拼写英文:) 所以,所有数字都高于主对角线所以 data.dmp 包含: 1 0 1, 0 1 , 0
f = file('data.dmp','r')
s = StringIO(f.readline()).getvalue()
f.close()
matrix = numpy.asarray(eval("["+s+"]"))
由于我未知的原因,hcluster 使用反转值,例如如果 A!=C 我使用 0,如果 A == D 使用 1
sqfrm = squareform(matrix)
Y = pdist(sqfrm, metric="cosine")
连锁Y
Z = linkage(Y, method="complete")
所以,矩阵 Z 是我需要的(如果我正确使用了 hcluster?)
但我有下一个问题:
我想对大量输入数据使用稀疏矩阵,因为像现在这样生成输入数据很耗时,我需要从另一种语言将数据导入 python,这就是我需要读取文本文件的原因。请好心,python大师的建议如何制作?
对于使用 python hcluster 的人,我需要处理大量数据,数百行,可以在 hcluster 中完成吗?这个算法真的能产生正确的HAC吗?
感谢您的阅读,感谢您的帮助!