0

m*n 配列で階層クラスタリングを実行しようとしています。

  1. 入力配列 : 500 * 1000 (1000 特徴、500 観測)
  2. 自己定義の pdist 関数を使用して距離行列を計算する
  3. この距離行列をリンケージ関数にフィードします: clusters = sch.linkage(distanceMatrix,'single')
  4. フラットなクラスターを形成する: fc = sch.fcluster(clusters,cutoff,'distance')

これにより、いくつかのクラスターが得られます (カットオフ値 6.0 を使用して約 80)。とにかく、各クラスターに対応する 1000 個の機能も取得できるのでしょうか? (K-means クラスタリングを使用して重心の特徴を取得するように)。

4

1 に答える 1

3

階層的クラスタリングのクラスター (または、「球状」に制限されている k-means とガウス混合 EM を除くほとんどすべて - 実際には凸クラスター) は、必ずしも賢明な手段を持っているわけではありません。

非球状のクラスターが可能になるためです。それは実際には機能です...

https://en.wikipedia.org/wiki/Cluster_analysis#Connectivity_based_clustering_.28hierarchical_clustering.29

「リンケージ クラスタリングの例」というタイトルの右の画像を見てください。この「バナナ」の例のクラスターは何の役に立つでしょうか? 重心がクラスター内にない可能性もあります。

必要に応じて、重心を自分で計算できることに注意してください。クラスタリング アルゴリズムは重心を必要としないため、明らかに自動的に計算されません。

于 2013-02-14T10:10:32.333 に答える