2017-12-21 7 views
1

paperで提案されているように、クラスタ適応学習の実装に取り​​組んでいます。異なるレベルの階層的クラスタリングからラベルを取得する

dendogram(上記論文から)

は、私は次の行を使用することができます。これは、このような樹形図を作成することだった場合

X = sp.hstack((title, abstract), format='csr') 
Z = ward(X.todense()) 

:階層的クラスタリングを実現するために、私は次のように使用しました:(。図から、すなわち2または3)のクラスを取得する

clusters = fcluster(Z, k=2, criterion='maxclust') 

Xが0として表現するために属しますまたは1。

どのようにグループを分割して、各Xのラベルを複数のレベルから得ることができますか。たとえば、Xが属するクラスのリストを2,4,4または9から取得するにはどうすればよいですか?図3、図5および6

+0

あなたの質問は何ですか? – user1767754

+0

@ user1767754 **太字**セクションを参照してください。質問はまだ不明ですか? – jdoe

答えて

0

使用

レベル cophenetic distanceが平坦クラスタ内で許可されているものを示す整数(0、1、2、...)である
fcluster(Z, height, criterion='distance') 

2つのオブジェクト間のコーフェン距離は、2つのオブジェクトを含む二つの分岐この手段

単一のブランチにマージ系統樹の高さは、次のとおり

  • 高さ= 0何もしない場合は、オリジナルの値ごとに1つのシングルポイントクラスタを取得します。それほど役に立たない。
  • height = 1は、元のエントリ間のレベルマージを実行します。
  • height = 2は、第1レベルのクラスタ間の第2レベルのマージを実行します。

私は10個の要素の上にいくつかのリンケージZを生成し、これを説明するために

[fcluster(Z, height, criterion='distance') for height in range(5)] 

を実行しました:

[10,5, 3, 1, 6, 4, 7, 8, 9, 2] <- level 0, everyone separate 
    [6, 3, 2, 1, 3, 2, 4, 4, 5, 1] <- 6 clusters 
    [4, 3, 2, 1, 3, 2, 3, 3, 3, 1] <- 4 clusters 
    [3, 3, 2, 1, 3, 2, 3, 3, 3, 1] <- 3 clusters 
    [2, 2, 2, 1, 2, 2, 2, 2, 2, 1] <- 2 clusters 
関連する問題