MiniBatchKMeans#

class sklearn.cluster.MiniBatchKMeans(n_clusters=8, *, init='k-means++', max_iter=100, batch_size=1024, verbose=0, compute_labels=True, random_state=None, tol=0.0, max_no_improvement=10, init_size=None, n_init='auto', reassignment_ratio=0.01)[source]#

Mini-Batch K-Means-Clustering.

Lesen Sie mehr im Benutzerhandbuch.

Parameter:
n_clustersint, default=8

Die Anzahl der zu bildenden Cluster sowie die Anzahl der zu generierenden Zentren.

init{‘k-means++’, ‘random’}, callable oder array-like von Form (n_clusters, n_features), default=’k-means++’

Methode zur Initialisierung

„k-means++“ : wählt anfängliche Clusterzentren mithilfe von Stichproben aus, die auf einer empirischen Wahrscheinlichkeitsverteilung des Beitrags der Punkte zur Gesamtträgheit basieren. Diese Technik beschleunigt die Konvergenz. Der implementierte Algorithmus ist „greedy k-means++“. Er unterscheidet sich vom Vanilla k-means++ dadurch, dass bei jedem Stichprobenschritt mehrere Versuche unternommen und das beste Zentrum unter ihnen ausgewählt wird.

„random“: wählt n_clusters Beobachtungen (Zeilen) zufällig aus den Daten als anfängliche Zentren aus.

Wenn ein Array übergeben wird, sollte es die Form (n_clusters, n_features) haben und die anfänglichen Zentren angeben.

Wenn ein Callable übergeben wird, sollte es die Argumente X, n_clusters und einen Zufallszustand empfangen und eine Initialisierung zurückgeben.

Zur Bewertung der Auswirkungen der Initialisierung siehe das Beispiel Empirische Bewertung der Auswirkungen der k-means-Initialisierung.

max_iterint, default=100

Maximale Anzahl von Iterationen über den vollständigen Datensatz, bevor unabhängig von frühen Stoppkriterien beendet wird.

batch_sizeint, default=1024

Größe der Minibatches. Für schnellere Berechnungen können Sie batch_size > 256 * anzahl_der_cores setzen, um Parallelität auf allen Kernen zu ermöglichen.

Geändert in Version 1.0: Der Standardwert von batch_size wurde von 100 auf 1024 geändert.

verboseint, default=0

Ausführlichkeitsmodus.

compute_labelsbool, default=True

Berechnet die Label-Zuweisung und die Trägheit für den vollständigen Datensatz, nachdem die Minibatch-Optimierung in fit konvergiert ist.

random_stateint, RandomState-Instanz oder None, default=None

Bestimmt die Zufallszahlengenerierung für die Zentreninitialisierung und die zufällige Neuzuweisung. Verwenden Sie eine Ganzzahl, um die Zufälligkeit deterministisch zu machen. Siehe Glossar.

tolfloat, default=0.0

Steuert das frühzeitige Beenden basierend auf den relativen Zentrumsänderungen, gemessen an einer geglätteten, varianznormalisierten Darstellung der mittleren quadrierten Positionsänderungen der Zentren. Diese Heuristik für das frühzeitige Beenden ist der für die Batch-Variante der Algorithmen verwendeten ähnlicher, verursacht jedoch einen geringen Rechen- und Speicheraufwand gegenüber der Trägheitsheursitik.

Um die Konvergenzerkennung basierend auf der normalisierten Zentrumsänderung zu deaktivieren, setzen Sie tol auf 0.0 (Standard).

max_no_improvementint, default=10

Steuert das frühzeitige Beenden basierend auf der aufeinanderfolgenden Anzahl von Minibatches, die keine Verbesserung der geglätteten Trägheit ergeben.

Um die Konvergenzerkennung basierend auf der Trägheit zu deaktivieren, setzen Sie max_no_improvement auf None.

init_sizeint, default=None

Anzahl der zufällig zu ziehenden Stichproben zur Beschleunigung der Initialisierung (manchmal auf Kosten der Genauigkeit): Der Algorithmus wird durch Ausführen eines Batch-KMeans auf einer zufälligen Teilmenge der Daten initialisiert. Dies muss größer als n_clusters sein.

Wenn None, dann ist die Heuristik init_size = 3 * batch_size wenn 3 * batch_size < n_clusters, ansonsten init_size = 3 * n_clusters.

n_init‘auto’ oder int, default=”auto”

Anzahl der zufälligen Initialisierungen, die versucht werden. Im Gegensatz zu KMeans wird der Algorithmus nur einmal ausgeführt, wobei die beste der n_init Initialisierungen, gemessen an der Trägheit, verwendet wird. Mehrere Läufe werden für dünne, hochdimensionale Probleme empfohlen (siehe Clustering dünner Daten mit k-means).

Wenn n_init='auto', hängt die Anzahl der Läufe vom Wert von init ab: 3, wenn init='random' oder init ein Callable ist; 1, wenn init='k-means++' oder init ein Array-ähnliches Objekt ist.

Hinzugefügt in Version 1.2: Option 'auto' für n_init hinzugefügt.

Geändert in Version 1.4: Standardwert für n_init wurde in Version auf 'auto' geändert.

reassignment_ratiofloat, default=0.01

Steuert den Bruchteil der maximalen Anzahl von Zählungen für ein Zentrum, das neu zugewiesen werden soll. Ein höherer Wert bedeutet, dass Zentren mit geringer Zählung leichter neu zugewiesen werden, was bedeutet, dass das Modell länger zur Konvergenz benötigt, aber zu einer besseren Clusterbildung konvergieren sollte. Ein zu hoher Wert kann jedoch zu Konvergenzproblemen führen, insbesondere bei einer kleinen Batch-Größe.

Attribute:
cluster_centers_ndarray von Form (n_clusters, n_features)

Koordinaten der Clusterzentren.

labels_ndarray der Form (n_samples,)

Labels jedes Punkts (wenn compute_labels auf True gesetzt ist).

inertia_float

Der Wert des Trägheitskriteriums, das der gewählten Partition zugeordnet ist, wenn compute_labels auf True gesetzt ist. Wenn compute_labels auf False gesetzt ist, ist dies eine Annäherung der Trägheit, die auf einem exponentiell gewichteten Durchschnitt der Batch-Trägheiten basiert. Die Trägheit ist definiert als die Summe der quadrierten Abstände von Stichproben zu ihrem Clusterzentrum, gewichtet durch die Stichprobengewichte, falls vorhanden.

n_iter_int

Anzahl der Iterationen über den gesamten Datensatz.

n_steps_int

Anzahl der verarbeiteten Minibatches.

Hinzugefügt in Version 1.0.

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

KMeans

Die klassische Implementierung der auf Lloyd's Algorithmus basierenden Clusterbildungsmethode. Sie verarbeitet den gesamten Eingabedatensatz in jeder Iteration.

Anmerkungen

Siehe https://www.eecs.tufts.edu/~dsculley/papers/fastkmeans.pdf

Wenn es zu wenige Punkte im Datensatz gibt, können einige Zentren dupliziert werden, was bedeutet, dass eine ordnungsgemäße Clusterbildung im Hinblick auf die Anzahl der angeforderten Cluster und die Anzahl der zurückgegebenen Cluster nicht immer übereinstimmt. Eine Lösung besteht darin, reassignment_ratio=0 zu setzen, was die Neuzuweisung zu kleiner Cluster verhindert.

Vergleich mit BIRCH siehe Vergleich von BIRCH und MiniBatchKMeans.

Beispiele

>>> from sklearn.cluster import MiniBatchKMeans
>>> import numpy as np
>>> X = np.array([[1, 2], [1, 4], [1, 0],
...               [4, 2], [4, 0], [4, 4],
...               [4, 5], [0, 1], [2, 2],
...               [3, 2], [5, 5], [1, -1]])
>>> # manually fit on batches
>>> kmeans = MiniBatchKMeans(n_clusters=2,
...                          random_state=0,
...                          batch_size=6,
...                          n_init="auto")
>>> kmeans = kmeans.partial_fit(X[0:6,:])
>>> kmeans = kmeans.partial_fit(X[6:12,:])
>>> kmeans.cluster_centers_
array([[3.375, 3.  ],
       [0.75 , 0.5 ]])
>>> kmeans.predict([[0, 0], [4, 4]])
array([1, 0], dtype=int32)
>>> # fit on the whole data
>>> kmeans = MiniBatchKMeans(n_clusters=2,
...                          random_state=0,
...                          batch_size=6,
...                          max_iter=10,
...                          n_init="auto").fit(X)
>>> kmeans.cluster_centers_
array([[3.55102041, 2.48979592],
       [1.06896552, 1.        ]])
>>> kmeans.predict([[0, 0], [4, 4]])
array([1, 0], dtype=int32)

Zum Vergleich von Mini-Batch K-Means-Clustering mit anderen Clustering-Algorithmen siehe Vergleich verschiedener Clustering-Algorithmen auf Spielzeugdatensätzen

fit(X, y=None, sample_weight=None)[source]#

Berechnet die Zentren auf X, indem es in Minibatches unterteilt wird.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Trainingsinstanzen zum Clustern. Beachten Sie, dass die Daten in C-Reihenfolge konvertiert werden, was eine Speicher kopie verursacht, wenn die angegebenen Daten nicht C-kontinuierlich sind. Wenn eine dünne Matrix übergeben wird, wird eine Kopie erstellt, wenn sie nicht im CSR-Format vorliegt.

yIgnoriert

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

sample_weightarray-like der Form (n_samples,), Standardwert=None

Die Gewichte für jede Beobachtung in X. Wenn None, erhalten alle Beobachtungen gleiches Gewicht. sample_weight wird während der Initialisierung nicht verwendet, wenn init ein Callable oder ein vom Benutzer bereitgestelltes Array ist.

Hinzugefügt in Version 0.20.

Gibt zurück:
selfobject

Angepasster Schätzer.

fit_predict(X, y=None, sample_weight=None)[source]#

Berechnet Clusterzentren und sagt den Cluster-Index für jede Stichprobe voraus.

Bequemlichkeitsmethode; äquivalent zu fit(X) gefolgt von predict(X).

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Neue Daten zur Transformation.

yIgnoriert

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

sample_weightarray-like der Form (n_samples,), Standardwert=None

Die Gewichte für jede Beobachtung in X. Wenn None, erhalten alle Beobachtungen gleiches Gewicht.

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

Index des Clusters, zu dem jede Stichprobe gehört.

fit_transform(X, y=None, sample_weight=None)[source]#

Berechnet das Clustering und transformiert X in den Cluster-Entfernungsraum.

Äquivalent zu fit(X).transform(X), aber effizienter implementiert.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Neue Daten zur Transformation.

yIgnoriert

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

sample_weightarray-like der Form (n_samples,), Standardwert=None

Die Gewichte für jede Beobachtung in X. Wenn None, erhalten alle Beobachtungen gleiches Gewicht.

Gibt zurück:
X_newndarray von Form (n_samples, n_clusters)

X transformiert in den neuen Raum.

get_feature_names_out(input_features=None)[source]#

Holt die Ausgabemerkmale für die Transformation.

Die Feature-Namen werden mit dem kleingeschriebenen Klassennamen präfixiert. Wenn der Transformer z.B. 3 Features ausgibt, dann sind die Feature-Namen: ["klassenname0", "klassenname1", "klassenname2"].

Parameter:
input_featuresarray-like von str oder None, default=None

Wird nur verwendet, um die Feature-Namen mit den in fit gesehenen Namen zu validieren.

Gibt zurück:
feature_names_outndarray von str-Objekten

Transformierte Merkmalnamen.

get_metadata_routing()[source]#

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)[source]#

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.

partial_fit(X, y=None, sample_weight=None)[source]#

Aktualisiert die k-means-Schätzung auf einem einzelnen Minibatch X.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Trainingsinstanzen zum Clustern. Beachten Sie, dass die Daten in C-Reihenfolge konvertiert werden, was eine Speicher kopie verursacht, wenn die angegebenen Daten nicht C-kontinuierlich sind. Wenn eine dünne Matrix übergeben wird, wird eine Kopie erstellt, wenn sie nicht im CSR-Format vorliegt.

yIgnoriert

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

sample_weightarray-like der Form (n_samples,), Standardwert=None

Die Gewichte für jede Beobachtung in X. Wenn None, erhalten alle Beobachtungen gleiches Gewicht. sample_weight wird während der Initialisierung nicht verwendet, wenn init ein Callable oder ein vom Benutzer bereitgestelltes Array ist.

Gibt zurück:
selfobject

Gibt den aktualisierten Schätzer zurück.

predict(X)[source]#

Sagt den nächstgelegenen Cluster voraus, zu dem jede Stichprobe in X gehört.

In der Vektorquantisierungsliteratur werden die cluster_centers_ als Codebuch bezeichnet, und jeder von predict zurückgegebene Wert ist der Index des nächstgelegenen Codes im Codebuch.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Neue Daten zur Vorhersage.

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

Index des Clusters, zu dem jede Stichprobe gehört.

score(X, y=None, sample_weight=None)[source]#

Das Gegenteil des Werts von X für das K-Means-Ziel.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Neue Daten.

yIgnoriert

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

sample_weightarray-like der Form (n_samples,), Standardwert=None

Die Gewichte für jede Beobachtung in X. Wenn None, erhalten alle Beobachtungen gleiches Gewicht.

Gibt zurück:
scorefloat

Das Gegenteil des Werts von X für das K-Means-Ziel.

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') MiniBatchKMeans[source]#

Konfiguriert, ob Metadaten für die fit-Methode angefordert werden sollen.

Beachten Sie, dass diese Methode nur relevant ist, wenn dieser Schätzer als Unter-Schätzer innerhalb eines Meta-Schätzers verwendet wird und Metadaten-Routing mit enable_metadata_routing=True aktiviert ist (siehe sklearn.set_config). Bitte lesen Sie das Benutzerhandbuch, um zu erfahren, wie der Routing-Mechanismus funktioniert.

Die Optionen für jeden Parameter sind

  • True: Metadaten werden angefordert und, falls vorhanden, an fit übergeben. Die Anforderung wird ignoriert, wenn keine Metadaten vorhanden sind.

  • False: Metadaten werden nicht angefordert und der Meta-Schätzer übergibt sie nicht an fit.

  • None: Metadaten werden nicht angefordert und der Meta-Schätzer löst einen Fehler aus, wenn der Benutzer sie bereitstellt.

  • str: Metadaten sollten mit diesem Alias an den Meta-Schätzer übergeben werden und nicht mit dem ursprünglichen Namen.

Der Standardwert (sklearn.utils.metadata_routing.UNCHANGED) behält die bestehende Anforderung bei. Dies ermöglicht es Ihnen, die Anforderung für einige Parameter zu ändern und für andere nicht.

Hinzugefügt in Version 1.3.

Parameter:
sample_weightstr, True, False, oder None, Standardwert=sklearn.utils.metadata_routing.UNCHANGED

Metadaten-Routing für den Parameter sample_weight in fit.

Gibt zurück:
selfobject

Das aktualisierte Objekt.

set_output(*, transform=None)[source]#

Ausgabecontainer festlegen.

Siehe Einführung in die set_output API für ein Beispiel zur Verwendung der API.

Parameter:
transform{“default”, “pandas”, “polars”}, default=None

Konfiguriert die Ausgabe von transform und fit_transform.

  • "default": Standardausgabeformat eines Transformers

  • "pandas": DataFrame-Ausgabe

  • "polars": Polars-Ausgabe

  • None: Die Transformationskonfiguration bleibt unverändert

Hinzugefügt in Version 1.4: Die Option "polars" wurde hinzugefügt.

Gibt zurück:
selfestimator instance

Schätzer-Instanz.

set_params(**params)[source]#

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.

set_partial_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') MiniBatchKMeans[source]#

Konfiguriert, ob Metadaten für die partial_fit-Methode angefordert werden sollen.

Beachten Sie, dass diese Methode nur relevant ist, wenn dieser Schätzer als Unter-Schätzer innerhalb eines Meta-Schätzers verwendet wird und Metadaten-Routing mit enable_metadata_routing=True aktiviert ist (siehe sklearn.set_config). Bitte lesen Sie das Benutzerhandbuch, um zu erfahren, wie der Routing-Mechanismus funktioniert.

Die Optionen für jeden Parameter sind

  • True: Metadaten werden angefordert und an partial_fit übergeben, wenn sie bereitgestellt werden. Die Anforderung wird ignoriert, wenn keine Metadaten bereitgestellt werden.

  • False: Metadaten werden nicht angefordert und der Meta-Schätzer übergibt sie nicht an partial_fit.

  • None: Metadaten werden nicht angefordert und der Meta-Schätzer löst einen Fehler aus, wenn der Benutzer sie bereitstellt.

  • str: Metadaten sollten mit diesem Alias an den Meta-Schätzer übergeben werden und nicht mit dem ursprünglichen Namen.

Der Standardwert (sklearn.utils.metadata_routing.UNCHANGED) behält die bestehende Anforderung bei. Dies ermöglicht es Ihnen, die Anforderung für einige Parameter zu ändern und für andere nicht.

Hinzugefügt in Version 1.3.

Parameter:
sample_weightstr, True, False, oder None, Standardwert=sklearn.utils.metadata_routing.UNCHANGED

Metadaten-Routing für den Parameter sample_weight in partial_fit.

Gibt zurück:
selfobject

Das aktualisierte Objekt.

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') MiniBatchKMeans[source]#

Konfiguriert, ob Metadaten für die score-Methode angefordert werden sollen.

Beachten Sie, dass diese Methode nur relevant ist, wenn dieser Schätzer als Unter-Schätzer innerhalb eines Meta-Schätzers verwendet wird und Metadaten-Routing mit enable_metadata_routing=True aktiviert ist (siehe sklearn.set_config). Bitte lesen Sie das Benutzerhandbuch, um zu erfahren, wie der Routing-Mechanismus funktioniert.

Die Optionen für jeden Parameter sind

  • True: Metadaten werden angefordert und, falls vorhanden, an score übergeben. Die Anforderung wird ignoriert, wenn keine Metadaten vorhanden sind.

  • False: Metadaten werden nicht angefordert und der Meta-Schätzer übergibt sie nicht an score.

  • None: Metadaten werden nicht angefordert und der Meta-Schätzer löst einen Fehler aus, wenn der Benutzer sie bereitstellt.

  • str: Metadaten sollten mit diesem Alias an den Meta-Schätzer übergeben werden und nicht mit dem ursprünglichen Namen.

Der Standardwert (sklearn.utils.metadata_routing.UNCHANGED) behält die bestehende Anforderung bei. Dies ermöglicht es Ihnen, die Anforderung für einige Parameter zu ändern und für andere nicht.

Hinzugefügt in Version 1.3.

Parameter:
sample_weightstr, True, False, oder None, Standardwert=sklearn.utils.metadata_routing.UNCHANGED

Metadaten-Routing für den Parameter sample_weight in score.

Gibt zurück:
selfobject

Das aktualisierte Objekt.

transform(X)[source]#

Transformiert X in einen Cluster-Entfernungsraum.

Im neuen Raum ist jede Dimension die Entfernung zu den Clusterzentren. Beachten Sie, dass auch wenn X dünn ist, das von transform zurückgegebene Array normalerweise dicht ist.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Neue Daten zur Transformation.

Gibt zurück:
X_newndarray von Form (n_samples, n_clusters)

X transformiert in den neuen Raum.