spectral_clustering#
- sklearn.cluster.spectral_clustering(affinity, *, n_clusters=8, n_components=None, eigen_solver=None, random_state=None, n_init=10, eigen_tol='auto', assign_labels='kmeans', verbose=False)[Quelle]#
Wendet Clustering auf eine Projektion des normalisierten Laplace-Operators an.
In der Praxis ist Spectral Clustering sehr nützlich, wenn die Struktur der einzelnen Cluster stark nicht-konvex ist oder allgemeiner, wenn ein Maß für das Zentrum und die Streuung des Clusters keine geeignete Beschreibung des vollständigen Clusters darstellt. Zum Beispiel, wenn die Cluster verschachtelte Kreise auf der 2D-Ebene sind.
Wenn affinity die Adjazenzmatrix eines Graphen ist, kann diese Methode verwendet werden, um normalisierte Graph-Schnitte zu finden [1], [2].
Lesen Sie mehr im Benutzerhandbuch.
- Parameter:
- affinity{array-like, sparse matrix} von Form (n_samples, n_samples)
Die Affinitätsmatrix, die die Beziehung der zu integrierenden Stichproben beschreibt. **Muss symmetrisch sein**.
- Mögliche Beispiele
Adjazenzmatrix eines Graphen,
Wärmekern der paarweisen Distanzmatrix der Stichproben,
symmetrische k-nächste-Nachbarn-Konnektivitätsmatrix der Stichproben.
- n_clustersint, Standardwert=None
Anzahl der zu extrahierenden Cluster.
- n_componentsint, Standardwert=n_clusters
Anzahl der zu verwendenden Eigenvektoren für die spektrale Einbettung.
- eigen_solver{None, ‘arpack’, ‘lobpcg’, oder ‘amg’}
Die Methode zur Eigenwertzerlegung. Wenn None dann wird
'arpack'verwendet. Siehe [4] für weitere Details zu'lobpcg'. Der Eigensolver'amg'führt'lobpcg'mit optionaler algebraischer Mehrgitter-Vorkonditionierung aus und erfordert die Installation von pyamg. Er kann bei sehr großen dünn besetzten Problemen schneller sein [6] und [7].- random_stateint, RandomState instance, default=None
Ein pseudo-zufälliger Zahlen-Generator, der für die Initialisierung der lobpcg-Eigenvektorzerlegung verwendet wird, wenn
eigen_solver == 'amg', und für die K-Means-Initialisierung. Verwenden Sie eine Ganzzahl, um die Ergebnisse über Aufrufe hinweg deterministisch zu machen (siehe Glossar).Hinweis
Bei Verwendung von
eigen_solver == 'amg'ist es notwendig, auch den globalen Numpy-Seed mitnp.random.seed(int)festzulegen, um deterministische Ergebnisse zu erzielen. Siehe pyamg/pyamg#139 für weitere Informationen.- n_initint, Standard=10
Anzahl der Durchläufe, bei denen der k-Means-Algorithmus mit unterschiedlichen Zentroiden-Seeds ausgeführt wird. Die Endergebnisse sind die besten Ergebnisse aus n_init aufeinanderfolgenden Durchläufen in Bezug auf die Trägheit. Nur verwendet, wenn
assign_labels='kmeans'.- eigen_tolfloat, default=”auto”
Stoppkriterium für die Eigenwertzerlegung der Laplaceschen Matrix. Wenn
eigen_tol="auto"dann hängt die übergebene Toleranz vomeigen_solverab.Wenn
eigen_solver="arpack", dann isteigen_tol=0.0;Wenn
eigen_solver="lobpcg"odereigen_solver="amg", dann isteigen_tol=None, was den zugrunde liegendenlobpcg-Solver so konfiguriert, dass der Wert gemäß seinen Heuristiken automatisch aufgelöst wird. Siehescipy.sparse.linalg.lobpcgfür Details.
Beachten Sie, dass bei Verwendung von
eigen_solver="lobpcg"odereigen_solver="amg"Werte vontol<1e-5zu Konvergenzproblemen führen können und vermieden werden sollten.Hinzugefügt in Version 1.2: Option 'auto' hinzugefügt.
- assign_labels{‘kmeans’, ‘discretize’, ‘cluster_qr’}, Standardwert=’kmeans’
Die Strategie zur Zuweisung von Labels im Einbettungsraum. Es gibt drei Möglichkeiten, Labels nach der spektralen Einbettung zuzuweisen. k-means kann angewendet werden und ist eine beliebte Wahl. Es kann jedoch auch empfindlich auf die Initialisierung reagieren. Diskretisierung ist ein weiterer Ansatz, der weniger empfindlich auf zufällige Initialisierung reagiert [3]. Die cluster_qr-Methode [5] extrahiert Cluster direkt aus Eigenvektoren beim spektralen Clustering. Im Gegensatz zu k-means und Diskretisierung hat cluster_qr keine Tuning-Parameter und ist keine iterative Methode, kann aber k-means und Diskretisierung in Bezug auf Qualität und Geschwindigkeit übertreffen. Eine detaillierte Vergleich der Clustering-Strategien finden Sie im folgenden Beispiel: Segmentierung des Bildes griechischer Münzen in Regionen.
Geändert in Version 1.1: Neue Label-Methode 'cluster_qr' hinzugefügt.
- verbosebool, default=False
Ausführlichkeitsmodus.
Hinzugefügt in Version 0.24.
- Gibt zurück:
- labelsArray von Ganzzahlen, Form: n_samples
Die Labels der Cluster.
Anmerkungen
Der Graph sollte nur eine zusammenhängende Komponente enthalten, ansonsten sind die Ergebnisse wenig sinnvoll.
Dieser Algorithmus löst den normalisierten Schnitt für
k=2: es handelt sich um ein normalisiertes spektrales Clustering.Referenzen
Beispiele
>>> import numpy as np >>> from sklearn.metrics.pairwise import pairwise_kernels >>> from sklearn.cluster import spectral_clustering >>> X = np.array([[1, 1], [2, 1], [1, 0], ... [4, 7], [3, 5], [3, 6]]) >>> affinity = pairwise_kernels(X, metric='rbf') >>> spectral_clustering( ... affinity=affinity, n_clusters=2, assign_labels="discretize", random_state=0 ... ) array([1, 1, 1, 0, 0, 0])
Galeriebeispiele#
Segmentierung des Bildes von griechischen Münzen in Regionen