2016-11-23 2 views
2

Ich versuche zu tun k bedeutet Clustering in Scikit lernen. Code:K bedeutet Clustering in Scikit lernen

from sklearn.cluster import KMeans 
kmeans = KMeans(n_clusters = 10) 
x = df.values 
kmeans.fit(x.reshape(-1, 1)) 

Wenn der Parameter n_init = random, es zufälligen Anfangs Centroide wählt. Gibt es eine Möglichkeit, die verwendeten Anfangsschwerpunkte zu erhalten?

Antwort

2

aufrufen können Sie nur Ihre Clusterzentren erhalten, nachdem die KMeans Objekt, um Ihre Daten passen.

Kleiner Trick!

Sie können also den Parameter max_iter auf 1 einstellen. Standardmäßig ist es auf 300 eingestellt, und dann können sich die Zentren bei jeder Iteration ändern.

Wenn Sie nur eine Iteration verwenden, ordnet der Algorithmus jedes Sample einem Anfangszentrum zu und stoppt dann, ohne die Zentren zu aktualisieren.

So ruft .cluster_centers_ wird die ursprünglichen Schwerpunkte zurück!

+0

Ich nur noch eine Frage, wenn der Max_iter = 300, nach dem Zentrum ändert sich bei Ecah Iteration, Aufruf '.cluster_centers_' wird den neuesten Schwerpunkt geben (der Schwerpunkt bei 300. Iteration)? – vikky

+0

@vikky du hast es;) – MMF

+0

'km = KMeans (init = cluster_center, n_init = 1, max_iter = 1) drucken (km.cluster_centers_)' immer noch gleichen fehler –

-2

Ja, ich nehme an, Sie centroids = kmeans.cluster_centers_ versuchen können, bevor fit()

+0

Dies wird mir die anfänglichen Zentroide holen, die von der Bibliothek verwendet werden? – vikky

+0

AttributeError: 'KMeans' Objekt hat kein Attribut 'cluster_centers_' ist, was ich bekomme – vikky

+0

Ich entschuldige mich, die 'cluster_centers_' wird nicht verfügbar sein nach dem Aufruf von 'fit()'. Ich würde ein Zentroid-Array erstellen und es zum Erstellen des Clusters verwenden. 'kmeans = KMeans (init = centroids_array)'. Auf diese Weise können wir die Art und Weise anpassen, wie Zentroide initialisiert werden. Es tut mir leid, dass ich meine Antwort nicht bestätigt habe. – Jason

Verwandte Themen