2017-01-12 12 views
0

enter image description hereテキスト解析用に作成したトピックモデルの出力に対して、numpyとscipyを使って階層的クラスタリングを行っています。リンケージ行列値エラー:配列を持つ配列要素を設定する

私はテストコードをldamodelに適用したので、それは単語の表記になりました。その後私はそれを行列に変換しました。今、私はマトリックスのリンケージマトリックスを作るためにscipyを使いたいと思っています。しかし、それは値エラーを与える:配列要素をシーケンスで設定する。 これは、等しく整形された配列だけがクラスタ化できるためです。私の行列は、リストのリスト内のリスト間の長さに違いがあります。 私は今これを解決する方法はありません。 コードの一部です。それが役に立つのかどうかわかりません。私は本当に誰かが私を助けることを願っています。

import numpy as np 
    X = np.array(corpus) 
    from matplotlib import pyplot as plt 
    from scipy.cluster.hierarchy import dendrogram, linkage 
    Z = linkage(X, 'cosine') 
+0

このような質問をするときは、問題の行を特定し、その行に入力、配列またはそれ以外のものについて教えてください。最近の別の質問に対する答えを同じエラーで見てください。http://stackoverflow.com/questions/41621340/what-is-the-solutions-python-gives-me-valueerror-setting-an-array-element-with 。あなたの場合の重要な質問は、最初の行または最後の行の問題ですか? – hpaulj

+0

こんにちは、ご意見ありがとうございます。私はプログラミングではかなり新しいです(Pythonを紹介した言語学者)。これは愚かな質問として聞こえるかもしれませんが、私が問題の行をどのように特定できるかを教えてくれますか? – Bambi

+0

@hpaulj、Ohそして最後の行でエラーが発生します。Z = linkage(X、 'cosine')。私は問題なく行列Xを印刷することができますが、エラーを与えるのはZです。 – Bambi

答えて

1

あなたはLDAモデルから行列Xを取得言及しただろうと、それはある種の疎行列であるかもしれません。密度の高い行列に変換するにはX.todense()linkageメソッドを適用します。行列が大きすぎてメモリに格納できない場合は、 Z=linkage(X.todense(),distance='cosine')のようにします。

場合によっては、行列のdtypeを変更すると役立ちます。

P.S:私も同じ問題に直面し、私の疎なフィーチャマトリックス(scipy.sparse.csrマトリックス)を高密度に変換して問題を解決しました。

関連する問題