あなたはPythonでscipyのダウンロードでは、この階層的クラスタリングの呼び出しがある場合:Pythonのscipyでリンク/距離行列からクラスターの割り当てを計算する方法は?
from scipy.cluster.hierarchy import linkage
# dist_matrix is long form distance matrix
linkage_matrix = linkage(squareform(dist_matrix), linkage_method)
その後、個々の点のためのクラスタの割り当てにここから行くための効率的な方法は何でしょうか?すなわち、長さがN
のベクトルであり、N
はポイントの数であり、各エントリi
は、i
という点のクラスタ番号であり、得られたクラスタリングで所定の閾値thresh
によって生成されたクラスタの数を仮定すると、
明確にする:クラスタ番号は、ツリーにしきい値を適用した後のクラスタになります。この場合、各リーフノードが属するクラスタの固有のクラスタが得られます。各ポイントは、デンドログラムをカットするしきい値で定義される1つの「最も特定のクラスタ」に属するという点でユニークです。
scipy.cluster.hierarchy.fclusterdata
は、このクラスタ割り当てを戻り値として提供していますが、カスタムメイドの距離行列と距離メトリックから始まっているため、fclusterdata
は使用できません。質問は次のようになっています。fclusterdata
が計算しているもの、つまりクラスタの割り当てをどのように計算できますか?
、行列を観測し、クラスタリングと考えられているを参照してください結果が正しくない可能性があります。 linkage()への入力として距離行列の圧縮されたベクトルを直接与えることができます。 – HongboZhu
詳細をご覧ください:https://github.com/scipy/scipy/issues/2614 – HongboZhu