k_means#

sklearn.cluster.k_means(X, n_clusters, *, sample_weight=None, init='k-means++', n_init='auto', max_iter=300, verbose=False, tol=0.0001, random_state=None, copy_x=True, algorithm='lloyd', return_n_iter=False)[Quelle]#

Führt den K-Means-Clustering-Algorithmus durch.

Mehr dazu im Benutzerhandbuch.

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

Die zu clustemden Beobachtungen. Es ist zu beachten, dass die Daten in C-Reihenfolge konvertiert werden, was zu einer Speicher-Kopie führt, wenn die gegebenen Daten nicht C-kontinuierlich sind.

n_clustersint

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

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

Die Gewichte für jede Beobachtung in X. Wenn None, werden allen Beobachtungen gleiche Gewichte zugewiesen. sample_weight wird während der Initialisierung nicht verwendet, wenn init eine aufrufbare Funktion oder ein vom Benutzer bereitgestelltes Array ist.

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

Methode zur Initialisierung

  • 'k-means++': wählt initiale Clusterzentren für die k-means-Clusterbildung auf intelligente Weise aus, um die Konvergenz zu beschleunigen. Siehe Abschnitt Anmerkungen in k_init für weitere Details.

  • 'random': wählt n_clusters Beobachtungen (Zeilen) zufällig aus den Daten für die initialen Zentren aus.

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

  • Wenn eine aufrufbare Funktion übergeben wird, sollte sie die Argumente X, n_clusters und einen Zufallszustand erhalten und eine Initialisierung zurückgeben.

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

Anzahl, wie oft der k-means-Algorithmus mit unterschiedlichen Zentroiden-Seeds ausgeführt wird. Die Endergebnisse sind die besten Ausgaben von n_init aufeinanderfolgenden Läufen in Bezug auf die Trägheit.

Wenn n_init='auto', hängt die Anzahl der Läufe vom Wert von init ab: 10, wenn init='random' oder init eine aufrufbare Funktion 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 geändert auf 'auto'.

max_iterint, Standard=300

Maximale Anzahl von Iterationen des k-means-Algorithmus.

verbosebool, default=False

Ausführlichkeitsmodus.

tolfloat, Standard=1e-4

Relative Toleranz in Bezug auf die Frobenius-Norm der Differenz der Clusterzentren zwischen zwei aufeinanderfolgenden Iterationen, um Konvergenz zu erklären.

random_stateint, RandomState-Instanz oder None, default=None

Bestimmt die Zufallszahlengenerierung für die Zentroid-Initialisierung. Verwenden Sie eine Ganzzahl, um die Zufälligkeit deterministisch zu machen. Siehe Glossar.

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ßendes Addieren des Datenmittelwerts entstehen. Beachten Sie, dass, wenn die Originaldaten nicht C-kontinuierlich sind, eine Kopie erstellt wird, auch wenn copy_x False ist. Wenn die Originaldaten dünn besetzt sind, aber nicht im CSR-Format, wird eine Kopie erstellt, auch wenn copy_x False ist.

algorithm{“lloyd”, “elkan”}, Standard=”lloyd”

Zu verwendender K-Means-Algorithmus. Der klassische EM-artige Algorithmus ist "lloyd". Die Variation "elkan" kann bei einigen Datensätzen mit gut definierten Clustern effizienter sein, indem die Dreiecksungleichung verwendet wird. Sie ist jedoch speicherintensiver aufgrund der Zuweisung eines zusätzlichen Arrays der Form (n_samples, n_clusters).

Geändert in Version 0.18: Elkan-Algorithmus hinzugefügt

Geändert in Version 1.1: „full“ in „lloyd“ umbenannt und „auto“ sowie „full“ als veraltet markiert. „auto“ verwendet jetzt „lloyd“ statt „elkan“.

return_n_iterbool, Standard=False

Ob die Anzahl der Iterationen zurückgegeben werden soll oder nicht.

Gibt zurück:
centroidndarray der Form (n_clusters, n_features)

Zentren, die in der letzten Iteration von k-means gefunden wurden.

labelndarray der Form (n_samples,)

Das label[i] ist der Code oder Index des Zentrums, dem die i-te Beobachtung am nächsten liegt.

inertiafloat

Der Endwert des Trägheitskriteriums (Summe der quadrierten Abstände zum nächsten Zentrum für alle Beobachtungen im Trainingsdatensatz).

best_n_iterint

Anzahl der Iterationen, die den besten Ergebnissen entsprechen. Wird nur zurückgegeben, wenn return_n_iter auf True gesetzt ist.

Beispiele

>>> import numpy as np
>>> from sklearn.cluster import k_means
>>> X = np.array([[1, 2], [1, 4], [1, 0],
...               [10, 2], [10, 4], [10, 0]])
>>> centroid, label, inertia = k_means(
...     X, n_clusters=2, n_init="auto", random_state=0
... )
>>> centroid
array([[10.,  2.],
       [ 1.,  2.]])
>>> label
array([1, 1, 1, 0, 0, 0], dtype=int32)
>>> inertia
16.0