web-dev-qa-db-ja.com

距離行列に基づくクラスタリング

私の目的は、テキストドキュメントのコーパスに関して、単語がどれほど類似しているかに基づいて単語をクラスター化することです。単語のすべてのペア間のJaccard類似性を計算しました。言い換えれば、私は利用可能な疎距離行列を持っています。入力として距離行列を使用するクラスタリングアルゴリズム(およびおそらくPythonのライブラリ)を誰かに教えてもらえますか?クラスターの数も事前にわかりません。これらの単語をクラスター化し、どの単語がクラスター化されているかを取得したいだけです。

23
user2115183

事前計算された距離行列を使用して、scikit-learnでほとんどのアルゴリズムを使用できます。残念ながら、多くのアルゴリズムにはクラスター数が必要です。 [〜#〜] dbscan [〜#〜] は、クラスターの数を必要とせず、任意の距離行列を使用する唯一のものです。 MeanShift を試すこともできますが、これは距離を座標として解釈します-これも機能する可能性があります。

アフィニティ伝播 もありますが、実際にうまく機能することはありません。ただし、多くのクラスターが必要な場合は、それが役立つ場合があります。

開示:私はscikit-learnコア開発者です。

15
Andreas Mueller

Scipyクラスタリングパッケージは便利かもしれません( scipy.cluster )。 scipy.cluster.hierarchy には階層的なクラスタリング関数があります。ただし、これらには入力として圧縮行列(距離行列の上三角)が必要です。うまくいけば、ドキュメントのページがあなたを助けるでしょう。