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. WennNone, werden allen Beobachtungen gleiche Gewichte zugewiesen.sample_weightwird während der Initialisierung nicht verwendet, wenniniteine 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ähltn_clustersBeobachtungen (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_clustersund 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, wenninit='random'oderiniteine aufrufbare Funktion 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_initgeä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_xTrue (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 wenncopy_xFalse ist. Wenn die Originaldaten dünn besetzt sind, aber nicht im CSR-Format, wird eine Kopie erstellt, auch wenncopy_xFalse 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_iterauf 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