mean_shift#
- sklearn.cluster.mean_shift(X, *, bandwidth=None, seeds=None, bin_seeding=False, min_bin_freq=1, cluster_all=True, max_iter=300, n_jobs=None)[source]#
Führt Mean Shift Clustering von Daten mit einem flachen Kernel durch.
Lesen Sie mehr im Benutzerhandbuch.
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Eingabedaten.
- bandwidthfloat, default=None
Kernel-Bandbreite. Wenn nicht None, muss sie im Bereich [0, +inf) liegen.
Wenn None, wird die Bandbreite mithilfe einer Heuristik bestimmt, die auf dem Median aller paarweisen Abstände basiert. Dies benötigt quadratische Zeit in Bezug auf die Anzahl der Stichproben. Die Funktion sklearn.cluster.estimate_bandwidth kann verwendet werden, um dies effizienter zu tun.
- seedsarray-like von Form (n_seeds, n_features) oder None
Punkte, die als anfängliche Kernstandorte verwendet werden. Wenn None und bin_seeding=False, wird jeder Datenpunkt als Seed verwendet. Wenn None und bin_seeding=True, siehe bin_seeding.
- bin_seedingbool, default=False
Wenn True, sind die anfänglichen Kernstandorte nicht die Standorte aller Punkte, sondern die Standorte der diskretisierten Version von Punkten, wobei die Punkte auf einem Gitter mit einer Grobheit, die der Bandbreite entspricht, eingeteilt werden. Das Setzen dieser Option auf True beschleunigt den Algorithmus, da weniger Seeds initialisiert werden. Ignoriert, wenn das seeds-Argument nicht None ist.
- min_bin_freqint, default=1
Um den Algorithmus zu beschleunigen, werden nur die Gitterzellen mit mindestens min_bin_freq Punkten als Seeds akzeptiert.
- cluster_allbool, default=True
Wenn True, werden alle Punkte gruppiert, auch die "Waisen", die sich nicht innerhalb eines Kernels befinden. Waisen werden dem nächsten Kernel zugeordnet. Wenn False, erhalten Waisen die Cluster-Beschriftung -1.
- max_iterint, Standard=300
Maximale Anzahl von Iterationen pro Seed-Punkt, bevor der Clustering-Vorgang (für diesen Seed-Punkt) beendet wird, wenn noch keine Konvergenz erreicht wurde.
- n_jobsint, default=None
Die Anzahl der Jobs, die für die Berechnung verwendet werden sollen. Die folgenden Aufgaben profitieren von der Parallelisierung
Die Suche nach nächsten Nachbarn für die Bandbreitenschätzung und die Label-Zuweisungen. Siehe die Details in der Docstring der
NearestNeighborsKlasse.Hill-Climbing-Optimierung für alle Seeds.
Siehe Glossar für weitere Details.
Nonebedeutet 1, außer in einemjoblib.parallel_backendKontext.-1bedeutet die Verwendung aller Prozessoren. Siehe Glossar für weitere Details.Hinzugefügt in Version 0.17: Parallele Ausführung mit n_jobs.
- Gibt zurück:
- cluster_centersndarray von Form (n_clusters, n_features)
Koordinaten der Clusterzentren.
- labelsndarray der Form (n_samples,)
Cluster-Labels für jeden Punkt.
Anmerkungen
Ein Anwendungsbeispiel finden Sie unter Eine Demo des Mean-Shift-Clustering-Algorithmus.
Beispiele
>>> import numpy as np >>> from sklearn.cluster import mean_shift >>> X = np.array([[1, 1], [2, 1], [1, 0], ... [4, 7], [3, 5], [3, 6]]) >>> cluster_centers, labels = mean_shift(X, bandwidth=2) >>> cluster_centers array([[3.33, 6. ], [1.33, 0.66]]) >>> labels array([1, 1, 1, 0, 0, 0])