13

約 5000 エントリの距離マトリックスがあり、scipy の階層的クラスタリング メソッドを使用してマトリックスをクラスター化します。これに使用するコードは次のスニペットです。

Y = fastcluster.linkage(D, method='centroid') # D-distance matrix
Z1 = sch.dendrogram(Y,truncate_mode='level', p=7,show_contracted=True)

デンドログラムは、このすべてのデータでかなり密になるため、truncate_mode を使用して少し刈り込みます。これはすべて機能しますが、元の 5000 エントリのどれが樹状図の特定のブランチに属しているかを調べるにはどうすればよいでしょうか。

使ってみた

 leaves = sch.leaves_list(Y)

葉のリストを取得しますが、これはリンケージ出力を indata として使用し、枝刈りされた樹状図と葉リストの間の対応を確認できますが、元のエントリを樹状図に手動でマッピングするのは少し面倒です。

要約すると、枝刈りされた樹状図の枝に属する距離行列のすべての元のエントリをリストする方法はありますか? または、私が気付いていないこれを行う他の方法があります。

ありがとう

4

1 に答える 1

3

scipy.cluster.hierarchy.dendrogram によって返される辞書データ構造の 1 つに key がありivlドキュメントでは次のように説明されています。

葉ノードに対応するラベルのリスト

デンドログラム関数への入力として( を使用して) カスタム ラベルを指定できlabels=<array of lables>ますが、既定では、それらは元の観測の単なるインデックスです。元のラベル/インデックスと を比較する Z1['ivl']ことで、元のエントリが何であったかを判断できます。

于 2012-07-11T17:09:13.810 に答える