Pythonでhclusterライブラリを使用しようとしています。hcluster で疎行列を使用するのに十分な Python の知識がありません。誰か助けてください。だから、私がやっていること:
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 を生成しますか?
読んでくれてありがとう、助けてくれてありがとう!