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_clusters Beobachtungen (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 tol und max_iter), sind diese nicht konsistent mit labels_.

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 X Merkmalnamen hat, die alle Zeichenketten sind.

Siehe auch

KMeans

Ursprü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_weight wird während der Initialisierung nicht verwendet, wenn init aufrufbar 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 fit gesehenen 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 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)[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=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)[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 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)[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=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)[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 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.