se si dispone di questa chiamata clustering gerarchico in SciPy in Python:Come calcolare le assegnazioni di cluster dalle matrici linkage/distance in scipy in Python?
from scipy.cluster.hierarchy import linkage
# dist_matrix is long form distance matrix
linkage_matrix = linkage(squareform(dist_matrix), linkage_method)
allora qual è un modo efficace per andare da questo per le assegnazioni di cluster per singoli punti? ovvero un vettore di lunghezza N
dove N
è il numero di punti, dove ogni voce i
è il numero di cluster del punto i
, dato il numero di cluster generato da una soglia data thresh
sul clustering risultante?
Per chiarire: il numero di cluster sarebbe il cluster in cui si trova dopo aver applicato una soglia all'albero. In tal caso si otterrebbe un cluster univoco per ciascun nodo foglia per il cluster in cui si trova. Unico nel senso che ogni punto appartiene a un "cluster più specifico" definito dalla soglia in cui si taglia il dendrogramma.
So che scipy.cluster.hierarchy.fclusterdata
fornisce questa assegnazione di cluster come valore di ritorno, ma sto iniziando da una matrice di distanza personalizzata e una metrica di distanza, quindi non posso utilizzare fclusterdata
. La domanda si riduce a: come posso calcolare che cosa sta calcolando fclusterdata
- le assegnazioni del cluster?
Se si dà squareform (dist_matrix) per il collegamento(), la matrice è considerato come osservazioni e il raggruppamento i risultati potrebbero essere errati. È possibile assegnare direttamente il vettore condensato della matrice di distanze come input a linkage(). – HongboZhu
maggiori dettagli vedi: https://github.com/scipy/scipy/issues/2614 – HongboZhu