ward_tree#
- sklearn.cluster.ward_tree(X, *, connectivity=None, n_clusters=None, return_distance=False)[Quelle]#
Ward-Clustering basierend auf einer Merkmalsmatrix.
Führt rekursiv die beiden Cluster zusammen, die die Varianz innerhalb der Cluster minimal erhöhen.
Die Trägheitsmatrix verwendet eine Heapq-basierte Darstellung.
Dies ist die strukturierte Version, die eine gewisse topologische Struktur zwischen den Samples berücksichtigt.
Lesen Sie mehr im Benutzerhandbuch.
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Merkmalsmatrix, die
n_sampleszu clustern übergebene Samples darstellt.- connectivity{array-like, sparse matrix}, default=None
Konnektivitätsmatrix. Definiert für jedes Sample die benachbarten Samples gemäß einer gegebenen Struktur der Daten. Die Matrix wird als symmetrisch angenommen und nur die obere Dreieckshälfte wird verwendet. Standard ist None, d.h. der Ward-Algorithmus ist unstrukturiert.
- n_clustersint, default=None
n_clusterssollte kleiner alsn_samplessein. Stoppt frühzeitig die Konstruktion des Baumes bein_clusters.Dies ist nützlich, um die Rechenzeit zu verkürzen, wenn die Anzahl der Cluster nicht klein im Vergleich zur Anzahl der Samples ist. In diesem Fall wird der vollständige Baum nicht berechnet, daher ist die Ausgabe 'children' von begrenztem Nutzen und die Ausgabe 'parents' sollte stattdessen verwendet werden. Diese Option ist nur gültig, wenn eine Konnektivitätsmatrix angegeben wird.- return_distancebool, default=False
Wenn
True, gibt die Entfernung zwischen den Clustern zurück.
- Gibt zurück:
- childrenndarray of shape (n_nodes-1, 2)
Die Kinder jedes Nicht-Blattknotens. Werte kleiner als
n_samplesentsprechen Blättern des Baumes, bei denen es sich um die ursprünglichen Samples handelt. Ein Knotenigrößer oder gleichn_samplesist ein Nicht-Blattknoten und hat die Kinderchildren_[i - n_samples]. Alternativ werden in der i-ten Iteration children[i][0] und children[i][1] zusammengeführt, um den Knotenn_samples + izu bilden.- n_connected_componentsint
Die Anzahl der verbundenen Komponenten im Graphen.
- n_leavesint
Die Anzahl der Blätter im Baum.
- parentsndarray of shape (n_nodes,) or None
Der Elternteil jedes Knotens. Wird nur zurückgegeben, wenn eine Konnektivitätsmatrix angegeben wird, andernfalls wird 'None' zurückgegeben.
- distancesndarray of shape (n_nodes-1,)
Wird nur zurückgegeben, wenn
return_distanceaufTruegesetzt ist (zur Kompatibilität). Die Entfernungen zwischen den Zentren der Knoten.distances[i]entspricht einer gewichteten Euklidischen Entfernung zwischen den Knotenchildren[i, 1]undchildren[i, 2]. Wenn die Knoten sich auf Blätter des Baumes beziehen, dann istdistances[i]ihre ungewichtete Euklidische Entfernung. Die Entfernungen werden auf folgende Weise aktualisiert (aus scipy.hierarchy.linkage)Der neue Eintrag \(d(u,v)\) wird wie folgt berechnet:
\[d(u,v) = \sqrt{\frac{|v|+|s|} {T}d(v,s)^2 + \frac{|v|+|t|} {T}d(v,t)^2 - \frac{|v|} {T}d(s,t)^2}\]wobei \(u\) der neu verbundene Cluster ist, der aus den Clustern \(s\) und \(t\) besteht, \(v\) ein ungenutzter Cluster im Forest ist, \(T=|v|+|s|+|t|\) und \(|*|\) die Kardinalität seines Arguments ist. Dies ist auch als inkrementeller Algorithmus bekannt.
Beispiele
>>> import numpy as np >>> from sklearn.cluster import ward_tree >>> X = np.array([[1, 2], [1, 4], [1, 0], ... [4, 2], [4, 4], [4, 0]]) >>> children, n_connected_components, n_leaves, parents = ward_tree(X) >>> children array([[0, 1], [3, 5], [2, 6], [4, 7], [8, 9]]) >>> n_connected_components 1 >>> n_leaves 6