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_clustersBeobachtungen (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_coressetzen, um Parallelität auf allen Kernen zu ermöglichen.Geändert in Version 1.0: Der Standardwert von
batch_sizewurde 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 Heuristikinit_size = 3 * batch_sizewenn3 * batch_size < n_clusters, ansonsteninit_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_initInitialisierungen, 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, wenninit='random'oderinitein Callable ist; 1, wenninit='k-means++'oderinitein Array-ähnliches Objekt ist.Hinzugefügt in Version 1.2: Option 'auto' für
n_inithinzugefügt.Geändert in Version 1.4: Standardwert für
n_initwurde 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
XMerkmalnamen hat, die alle Zeichenketten sind.Hinzugefügt in Version 1.0.
Siehe auch
KMeansDie 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=0zu setzen, was die Neuzuweisung zu kleiner Cluster verhindert.Vergleich mit
BIRCHsiehe 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_weightwird während der Initialisierung nicht verwendet, wenninitein 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
fitgesehenen 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_weightwird während der Initialisierung nicht verwendet, wenninitein 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 vonpredictzurü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=Trueaktiviert ist (siehesklearn.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, anfitübergeben. Die Anforderung wird ignoriert, wenn keine Metadaten vorhanden sind.False: Metadaten werden nicht angefordert und der Meta-Schätzer übergibt sie nicht anfit.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_weightinfit.
- 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
transformundfit_transform."default": Standardausgabeformat eines Transformers"pandas": DataFrame-Ausgabe"polars": Polars-AusgabeNone: 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=Trueaktiviert ist (siehesklearn.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 anpartial_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 anpartial_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_weightinpartial_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=Trueaktiviert ist (siehesklearn.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, anscoreübergeben. Die Anforderung wird ignoriert, wenn keine Metadaten vorhanden sind.False: Metadaten werden nicht angefordert und der Meta-Schätzer übergibt sie nicht anscore.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_weightinscore.
- 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
transformzurü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.
Galeriebeispiele#
Biclustering von Dokumenten mit dem Spectral Co-Clustering Algorithmus
Vergleich verschiedener Clustering-Algorithmen auf Toy-Datensätzen
Empirische Auswertung des Einflusses der K-Means Initialisierung
Vergleich der K-Means und MiniBatchKMeans Clustering-Algorithmen