wenn Sie diesen hierarchischen Clustering-Aufruf in scipy in Python:Wie berechnet man Cluster-Zuordnungen aus Linkage/Distanz-Matrizen 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)
dann, was eine effiziente Möglichkeit, von diesem zu Cluster-Zuweisungen für die einzelnen Punkte zu gehen? ein Vektor der Länge N
wobei N
die Anzahl der Punkte ist, wobei jeder Eintrag i
die Clusternummer des Punktes i
ist, wobei die Anzahl der durch einen gegebenen Schwellenwert thresh
erzeugten Cluster für das resultierende Clustering gegeben ist?
Um zu verdeutlichen: Die Cluster-Nummer wäre der Cluster, in dem sie sich nach dem Anwenden eines Schwellenwerts auf den Baum befindet. In diesem Fall würden Sie einen eindeutigen Cluster für jeden Blattknoten für den Cluster erhalten, in dem er sich befindet. Eindeutig in dem Sinne, dass jeder Punkt zu einem "spezifischsten Cluster" gehört, der durch den Schwellenwert definiert wird, an dem Sie das Dendrogramm schneiden.
Ich weiß, dass scipy.cluster.hierarchy.fclusterdata
gibt Ihnen diese Cluster-Zuweisung als Rückgabewert, aber ich bin von einer benutzerdefinierten Distanzmatrix und Abstand Metrik, so dass ich nicht fclusterdata
verwenden kann. Die Frage läuft darauf hinaus: Wie kann ich berechnen, was fclusterdata
Computing ist - die Cluster-Zuordnungen?
Wenn Sie squareform (dist_matrix) zur Verknüpfung geben() wird die Matrix betrachtet als Beobachtungen und der Clustering Die Ergebnisse könnten falsch sein. Sie können den verdichteten Vektor der Abstandsmatrix direkt als Eingabe für linkage() angeben. – HongboZhu
Weitere Details finden Sie unter: https://github.com/scipy/scipy/issues/2614 – HongboZhu