SpectralClustering#

class sklearn.cluster.SpectralClustering(n_clusters=8, *, eigen_solver=None, n_components=None, random_state=None, n_init=10, gamma=1.0, affinity='rbf', n_neighbors=10, eigen_tol='auto', assign_labels='kmeans', degree=3, coef0=1, kernel_params=None, n_jobs=None, 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, z. B. wenn sich die Cluster in verschachtelten Kreisen auf der 2D-Ebene befinden.

Wenn die Affinitätsmatrix die Adjazenzmatrix eines Graphen ist, kann diese Methode verwendet werden, um normalisierte Graph-Schnitte zu finden [1], [2].

Beim Aufruf von fit wird eine Affinitätsmatrix konstruiert, entweder mittels einer Kernel-Funktion wie dem Gaußschen (auch RBF) Kernel mit Euklidischem Abstand d(X, X)

np.exp(-gamma * d(X,X) ** 2)

oder einer k-nächsten-Nachbarn-Konnektivitätsmatrix.

Alternativ kann eine vom Benutzer bereitgestellte Affinitätsmatrix durch Setzen von affinity='precomputed' angegeben werden.

Lesen Sie mehr im Benutzerhandbuch.

Parameter:
n_clustersint, default=8

Die Dimension des Projektionsunterraums.

eigen_solver{‘arpack’, ‘lobpcg’, ‘amg’}, default=None

Die Strategie für die Eigenwertzerlegung. AMG erfordert die Installation von pyamg. Es kann bei sehr großen, dünn besetzten Problemen schneller sein, kann aber auch zu Instabilitäten führen. Wenn None, wird 'arpack' verwendet. Siehe [4] für weitere Details zu 'lobpcg'.

n_componentsint, default=None

Anzahl der zu verwendenden Eigenvektoren für das spektrale Embedding. Wenn None, wird standardmäßig n_clusters verwendet.

random_stateint, RandomState instance, default=None

Ein pseudo-zufälliger Generator zur Initialisierung der lobpcg-Eigenvektoren-Zerlegung, 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 mit np.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 des K-Means-Algorithmus mit unterschiedlichen Zentroid-Seeds. Die Endergebnisse sind die besten Ausgaben von n_init aufeinanderfolgenden Durchläufen in Bezug auf die Trägheit. Wird nur verwendet, wenn assign_labels='kmeans'.

gammafloat, default=1.0

Kernel-Koeffizient für rbf, poly, sigmoid, laplacian und chi2-Kernel. Ignoriert für affinity='nearest_neighbors', affinity='precomputed' oder affinity='precomputed_nearest_neighbors'.

affinitystr oder callable, default=’rbf’
Wie die Affinitätsmatrix konstruiert wird.
  • ‘nearest_neighbors’: Konstruiert die Affinitätsmatrix durch Berechnung eines Graphen der nächsten Nachbarn.

  • ‘rbf’: Konstruiert die Affinitätsmatrix unter Verwendung eines Radial Basis Function (RBF) Kernels.

  • ‘precomputed’: Interpretiert X als eine vorab berechnete Affinitätsmatrix, bei der größere Werte eine größere Ähnlichkeit zwischen Instanzen anzeigen.

  • ‘precomputed_nearest_neighbors’: Interpretiert X als einen dünn besetzten Graphen von vorab berechneten Entfernungen und konstruiert eine binäre Affinitätsmatrix aus den n_neighbors nächsten Nachbarn jeder Instanz.

  • einer der von pairwise_kernels unterstützten Kernel.

Es sollten nur Kernel verwendet werden, die Ähnlichkeitswerte liefern (nicht-negative Werte, die mit zunehmender Ähnlichkeit steigen). Diese Eigenschaft wird vom Clustering-Algorithmus nicht überprüft.

n_neighborsint, default=10

Anzahl der Nachbarn, die bei der Konstruktion der Affinitätsmatrix unter Verwendung der Methode der nächsten Nachbarn verwendet werden. Ignoriert für affinity='rbf'.

eigen_tolfloat, default=”auto”

Abbruchkriterium für die Eigenzerlegung der Laplace-Matrix. Wenn eigen_tol="auto", dann hängt die übergebene Toleranz vom eigen_solver ab.

  • Wenn eigen_solver="arpack", dann ist eigen_tol=0.0;

  • Wenn eigen_solver="lobpcg" oder eigen_solver="amg", dann ist eigen_tol=None, was den zugrunde liegenden lobpcg-Solver so konfiguriert, dass der Wert gemäß seinen Heuristiken automatisch aufgelöst wird. Siehe scipy.sparse.linalg.lobpcg für Details.

Beachten Sie, dass bei Verwendung von eigen_solver="lobpcg" oder eigen_solver="amg" Werte von tol<1e-5 zu 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’}, default=’kmeans’

Die Strategie für die Zuweisung von Labels im Embedding-Raum. Es gibt zwei Möglichkeiten, Labels nach dem Laplace-Embedding zuzuweisen. k-Means ist eine beliebte Wahl, kann aber 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 direkt Cluster aus Eigenvektoren im spektralen Clustering. Im Gegensatz zu k-Means und Diskretisierung hat cluster_qr keine Abstimmungsparameter und führt keine Iterationen durch, kann aber k-Means und Diskretisierung in Bezug auf Qualität und Geschwindigkeit übertreffen.

Geändert in Version 1.1: Neue Labeling-Methode 'cluster_qr' hinzugefügt.

degreefloat, Standard=3

Grad des Polynom-Kernels. Ignoriert von anderen Kerneln.

coef0float, Standard=1

Null-Koeffizient für Polynom- und Sigmoid-Kernel. Ignoriert von anderen Kerneln.

kernel_paramsdict of str to any, default=None

Parameter (Schlüsselwortargumente) und Werte für den als callable übergebenen Kernel. Ignoriert von anderen Kerneln.

n_jobsint, default=None

Die Anzahl der parallelen Jobs, die ausgeführt werden, wenn affinity='nearest_neighbors' oder affinity='precomputed_nearest_neighbors'. Die Nachbarschaftssuche wird parallel durchgeführt. None bedeutet 1, es sei denn, Sie befinden sich in einem joblib.parallel_backend Kontext. -1 bedeutet die Verwendung aller Prozessoren. Siehe Glossar für weitere Details.

verbosebool, default=False

Ausführlichkeitsmodus.

Hinzugefügt in Version 0.24.

Attribute:
affinity_matrix_array-like of shape (n_samples, n_samples)

Affinitätsmatrix, die für das Clustering verwendet wird. Nur verfügbar, nachdem fit aufgerufen wurde.

labels_ndarray der Form (n_samples,)

Labels jedes Punkts

n_features_in_int

Anzahl der während des fits gesehenen Merkmale.

Hinzugefügt in Version 0.24.

feature_names_in_ndarray mit Form (n_features_in_,)

Namen der während fit gesehenen Merkmale. Nur definiert, wenn X Merkmalnamen hat, die alle Zeichenketten sind.

Hinzugefügt in Version 1.0.

Siehe auch

sklearn.cluster.KMeans

K-Means-Clustering.

sklearn.cluster.DBSCAN

Dichtebasierte räumliche Clusterbildung von Anwendungen mit Rauschen.

Anmerkungen

Eine Distanzmatrix, bei der 0 identische Elemente kennzeichnet und hohe Werte sehr unähnliche Elemente anzeigen, kann durch Anwendung des Gaußschen (auch RBF, Hitze-) Kernels in eine für den Algorithmus gut geeignete Affinitäts-/Ähnlichkeitsmatrix umgewandelt werden.

np.exp(- dist_matrix ** 2 / (2. * delta ** 2))

wobei delta ein freier Parameter ist, der die Breite des Gaußschen Kernels darstellt.

Eine Alternative ist die Verwendung einer symmetrischen Version der k-nächsten-Nachbarn-Konnektivitätsmatrix der Punkte.

Wenn das pyamg-Paket installiert ist, wird es verwendet: dies beschleunigt die Berechnung erheblich.

Referenzen

Beispiele

>>> from sklearn.cluster import SpectralClustering
>>> import numpy as np
>>> X = np.array([[1, 1], [2, 1], [1, 0],
...               [4, 7], [3, 5], [3, 6]])
>>> clustering = SpectralClustering(n_clusters=2,
...         assign_labels='discretize',
...         random_state=0).fit(X)
>>> clustering.labels_
array([1, 1, 1, 0, 0, 0])
>>> clustering
SpectralClustering(assign_labels='discretize', n_clusters=2,
    random_state=0)

Einen Vergleich von spektraler Clusterbildung mit anderen Clustering-Algorithmen finden Sie unter Vergleich verschiedener Clustering-Algorithmen auf Spielzeugdatensätzen

fit(X, y=None)[Quelle]#

Führt spektrale Clusterbildung aus Merkmalen oder einer Affinitätsmatrix durch.

Parameter:
X{array-artig, spärs matrix} der Form (n_samples, n_features) oder (n_samples, n_samples)

Trainingsinstanzen zum Clustern, Ähnlichkeiten / Affinitäten zwischen Instanzen, wenn affinity='precomputed', oder Distanzen zwischen Instanzen, wenn affinity='precomputed_nearest_neighbors. Wenn eine dünn besetzte Matrix in einem anderen Format als csr_matrix, csc_matrix oder coo_matrix bereitgestellt wird, wird sie in eine dünn besetzte csr_matrix konvertiert.

yIgnoriert

Nicht verwendet, hier zur API-Konsistenz durch Konvention vorhanden.

Gibt zurück:
selfobject

Eine trainierte Instanz des Schätzers.

fit_predict(X, y=None)[Quelle]#

Führt spektrale Clusterbildung auf X durch und gibt Cluster-Labels zurück.

Parameter:
X{array-artig, spärs matrix} der Form (n_samples, n_features) oder (n_samples, n_samples)

Trainingsinstanzen zum Clustern, Ähnlichkeiten / Affinitäten zwischen Instanzen, wenn affinity='precomputed', oder Distanzen zwischen Instanzen, wenn affinity='precomputed_nearest_neighbors. Wenn eine dünn besetzte Matrix in einem anderen Format als csr_matrix, csc_matrix oder coo_matrix bereitgestellt wird, wird sie in eine dünn besetzte csr_matrix konvertiert.

yIgnoriert

Nicht verwendet, hier zur API-Konsistenz durch Konvention vorhanden.

Gibt zurück:
labelsndarray der Form (n_samples,)

Clusterbeschriftungen.

get_metadata_routing()[Quelle]#

Holt das Metadaten-Routing dieses Objekts.

Bitte prüfen Sie im Benutzerhandbuch, wie der Routing-Mechanismus funktioniert.

Gibt zurück:
routingMetadataRequest

Ein MetadataRequest, der Routing-Informationen kapselt.

get_params(deep=True)[Quelle]#

Holt Parameter für diesen Schätzer.

Parameter:
deepbool, default=True

Wenn True, werden die Parameter für diesen Schätzer und die enthaltenen Unterobjekte, die Schätzer sind, zurückgegeben.

Gibt zurück:
paramsdict

Parameternamen, zugeordnet ihren Werten.

set_params(**params)[Quelle]#

Setzt die Parameter dieses Schätzers.

Die Methode funktioniert sowohl bei einfachen Schätzern als auch bei verschachtelten Objekten (wie Pipeline). Letztere haben Parameter der Form <component>__<parameter>, so dass es möglich ist, jede Komponente eines verschachtelten Objekts zu aktualisieren.

Parameter:
**paramsdict

Schätzer-Parameter.

Gibt zurück:
selfestimator instance

Schätzer-Instanz.