24

Python の scipy でこの階層的クラスタリング呼び出しがある場合:

from scipy.cluster.hierarchy import linkage
# dist_matrix is long form distance matrix
linkage_matrix = linkage(squareform(dist_matrix), linkage_method)

次に、これから個々のポイントのクラスター割り当てに進む効率的な方法は何ですか? つまり、長さのベクトル は点の数NNあり、各エントリiは点のクラスタ数であり、結果のクラスタリングでi特定のしきい値によって生成されたクラスタの数が与えられますか?thresh

明確にするために:クラスター番号は、ツリーにしきい値を適用した後のクラスターになります。In which case you would get a unique cluster for each Leaf node for each Leaf node that is in. 各ポイントが 1 つの「最も具体的なクラスター」に属しているという意味で一意です。これは、樹状図を切り取るしきい値によって定義されます。

このクラスターの割り当てが戻り値として返されることはわかっていscipy.cluster.hierarchy.fclusterdataますが、カスタムメイドの距離行列と距離メトリックから始めているため、 を使用できませんfclusterdatafclusterdata問題は次のようになります: 計算しているもの、つまりクラスターの割り当てをどのように計算できますか?

4

2 に答える 2

28

私があなたを正しく理解していれば、それがfclusterの機能です:

scipy.cluster.hierarchy.fcluster(Z, t, criterion='inconsistent', depth=2, R=None, monocrit=None)

連結行列 Z によって定義された階層的クラスタリングからフラット クラスターを形成します。

...

戻り値: 長さ n の配列。T[i] は、元の観測値 i が属するフラット クラスター番号です。

を呼び出すだけです。しきい値はfcluster(linkage_matrix, t)どこtですか。

于 2013-04-15T19:18:18.137 に答える