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 NearestNeighbors Klasse.

  • Hill-Climbing-Optimierung für alle Seeds.

Siehe Glossar für weitere Details.

None bedeutet 1, außer in einem joblib.parallel_backend Kontext. -1 bedeutet 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])