BisectingKMeans#
- class sklearn.cluster.BisectingKMeans(n_clusters=8, *, init='random', n_init=1, random_state=None, max_iter=300, verbose=0, tol=0.0001, copy_x=True, algorithm='lloyd', bisecting_strategy='biggest_inertia')[Quelle]#
Bisecting K-Means-Clustering.
Lesen Sie mehr im Benutzerhandbuch.
Hinzugefügt in Version 1.1.
- Parameter:
- n_clustersint, default=8
Die Anzahl der zu bildenden Cluster sowie die Anzahl der zu generierenden Zentren.
- init{‘k-means++’, ‘random’} oder aufrufbar, Standard=’random’
Methode zur Initialisierung
‘k-means++’ : wählt intelligente Anfangsclusterzentren für die k-means-Clusterbildung, um die Konvergenz zu beschleunigen. Siehe Abschnitt Notes in k_init für weitere Details.
„random“: wählt
n_clustersBeobachtungen (Zeilen) zufällig aus den Daten als anfängliche Zentren aus.Wenn ein Callable übergeben wird, sollte es die Argumente X, n_clusters und einen Zufallszustand empfangen und eine Initialisierung zurückgeben.
- n_initint, Standard=1
Anzahl der Durchläufe des inneren k-means-Algorithmus mit unterschiedlichen Zentroid-Seeds bei jeder Bisektion. Dies führt dazu, dass für jede Bisektion das beste Ergebnis aus n_init aufeinanderfolgenden Läufen in Bezug auf die Trägheit erzielt wird.
- random_stateint, RandomState-Instanz oder None, default=None
Bestimmt die Zufallszahlengenerierung für die Zentroidinitialisierung im inneren K-Means. Verwenden Sie eine Ganzzahl, um die Zufälligkeit deterministisch zu machen. Siehe Glossar.
- max_iterint, Standard=300
Maximale Anzahl von Iterationen des inneren k-means-Algorithmus bei jeder Bisektion.
- verboseint, default=0
Ausführlichkeitsmodus.
- tolfloat, Standard=1e-4
Relative Toleranz bezüglich der Frobenius-Norm der Differenz der Clusterzentren zweier aufeinanderfolgender Iterationen, um Konvergenz zu deklarieren. Wird im inneren k-means-Algorithmus bei jeder Bisektion verwendet, um die bestmöglichen Cluster auszuwählen.
- copy_xbool, Standard=True
Bei der Vorberechnung von Distanzen ist es numerisch genauer, die Daten zuerst zu zentrieren. Wenn copy_x True (Standard) ist, werden die Originaldaten nicht verändert. Wenn False, werden die Originaldaten verändert und vor der Rückgabe der Funktion wiederhergestellt, aber kleine numerische Unterschiede können durch Subtraktion und anschließende Addition des Datenmittelwerts entstehen. Beachten Sie, dass, wenn die Originaldaten nicht C-kontinuierlich sind, auch dann eine Kopie erstellt wird, wenn copy_x False ist. Wenn die Originaldaten spärlich, aber nicht im CSR-Format sind, wird eine Kopie erstellt, auch wenn copy_x False ist.
- algorithm{“lloyd”, “elkan”}, Standard=”lloyd”
Innerer K-Means-Algorithmus, der bei der Bisektion verwendet wird. Der klassische EM-ähnliche Algorithmus ist
"lloyd". Die"elkan"-Variante kann bei einigen Datensätzen mit klar definierten Clustern durch Nutzung der Dreiecksungleichung effizienter sein. Sie ist jedoch speicherintensiver aufgrund der Zuweisung eines zusätzlichen Arrays der Form(n_samples, n_clusters).- bisecting_strategy{„biggest_inertia“, „largest_cluster“}, Standard=„biggest_inertia“
Definiert, wie die Bisektion durchgeführt werden soll
„biggest_inertia“ bedeutet, dass BisectingKMeans immer alle berechneten Cluster auf den Cluster mit der größten SSE (Summe der quadrierten Fehler) prüft und diesen teilt. Dieser Ansatz konzentriert sich auf Präzision, kann aber kostspielig in Bezug auf die Ausführungszeit sein (insbesondere bei größeren Datenmengen).
„largest_cluster“ - BisectingKMeans teilt immer den Cluster mit der größten Anzahl von ihm zugewiesenen Punkten von allen zuvor berechneten Clustern. Dies sollte schneller als die Auswahl nach SSE („biggest_inertia“) funktionieren und in den meisten Fällen ähnliche Ergebnisse liefern.
- Attribute:
- cluster_centers_ndarray von Form (n_clusters, n_features)
Koordinaten der Clusterzentren. Wenn der Algorithmus vor vollständiger Konvergenz stoppt (siehe
tolundmax_iter), sind diese nicht konsistent mitlabels_.- labels_ndarray der Form (n_samples,)
Beschriftungen jedes Punkts.
- inertia_float
Summe der quadrierten Abstände von Samples zu ihrem nächsten Clusterzentrum, gewichtet durch die Sample-Gewichte, falls vorhanden.
- n_features_in_int
Anzahl der während des fits gesehenen Merkmale.
- 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.
Siehe auch
KMeansUrsprüngliche Implementierung des K-Means-Algorithmus.
Anmerkungen
Sie kann ineffizient sein, wenn n_cluster kleiner als 3 ist, aufgrund unnötiger Berechnungen für diesen Fall.
Beispiele
>>> from sklearn.cluster import BisectingKMeans >>> import numpy as np >>> X = np.array([[1, 1], [10, 1], [3, 1], ... [10, 0], [2, 1], [10, 2], ... [10, 8], [10, 9], [10, 10]]) >>> bisect_means = BisectingKMeans(n_clusters=3, random_state=0).fit(X) >>> bisect_means.labels_ array([0, 2, 0, 2, 0, 2, 1, 1, 1], dtype=int32) >>> bisect_means.predict([[0, 0], [12, 3]]) array([0, 2], dtype=int32) >>> bisect_means.cluster_centers_ array([[ 2., 1.], [10., 9.], [10., 1.]])
Für einen Vergleich zwischen BisectingKMeans und K-Means siehe Beispiel Vergleich der Leistung von Bisecting K-Means und regulärem K-Means.
- fit(X, y=None, sample_weight=None)[Quelle]#
Berechnet die Bisektions-k-means-Clusterbildung.
- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features)
Trainingsinstanzen zum Clustern.
Hinweis
Die Daten werden in C-Ordnung konvertiert, was zu einer Speicher-Kopie führt, wenn die gegebenen Daten nicht C-kontinuierlich sind.
- 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, wenninitaufrufbar ist.
- Gibt zurück:
- self
Angepasster Schätzer.
- fit_predict(X, y=None, sample_weight=None)[Quelle]#
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)[Quelle]#
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)[Quelle]#
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()[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.
- predict(X)[Quelle]#
Vorhersagt, zu welchem Cluster jedes Sample in X gehört.
Die Vorhersage erfolgt, indem der hierarchische Baum durchsucht wird, um den nächstgelegenen Blatt-Cluster zu finden.
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)[Quelle]#
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$') BisectingKMeans[Quelle]#
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)[Quelle]#
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)[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.
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') BisectingKMeans[Quelle]#
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)[Quelle]#
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#
Vergleich der Leistung von Bisecting K-Means und Regular K-Means