2017-02-22 10 views
0

Ich suche nach einer Möglichkeit, ein 2D-Array in n-Cluster mit Python zu segmentieren. Ich möchte die K bedeutet Methode, aber ich habe keinen Code gefunden. Ich habe versucht mit den k-Mitteln der sklearn-Bibliothek, aber ich habe nicht verstanden, wie man es richtig benutzt.Python K bedeutet Clustering Array

Antwort

0

Im allgemeinen wird ein Modell aus verwenden sklearn man muss:

  1. import es: from sklearn.cluster import KMeans

  2. ein Objekt Initialisiere das Modell mit den gewählten Parametern darstellt, kmeans = KMeans(n_clusters=2), als Beispiel.

  3. Trainieren Sie Ihre Daten mit der .fit() Methode: kmeans.fit(points). Jetzt hat das Objekt kmeans alle Daten, die sich auf Ihr trainiertes Modell beziehen, in seinen Attributen. Als Beispiel entspricht kmeans.labels_ einem Array mit den Bezeichnungen von jedem der Punkte, die zum Trainieren des Modells verwendet werden.

  4. Verwenden Sie die .predict(new_points)-Methode, um die Bezeichnung des nächstgelegenen Clusters zu einem Punkt oder einem Punktarray zu ermitteln.

Sie können alle die Attribute aus der kmeansalgorithm Seite erhalten: http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html

0

Von http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html#sklearn.cluster.KMeans

from sklearn.cluster import KMeans 
import numpy as np 

#this is your array with the values 
X = np.array([[1, 2], [1, 4], [1, 0], 
       [4, 2], [4, 4], [4, 0]]) 


#This function creates the classifier 
#n_clusters is the number of clusters you want to use to classify your data 
kmeans = KMeans(n_clusters=2, random_state=0).fit(X) 

#you can see the labels with: 
print kmeans.labels_ 

# the output will be something like: 
#array([0, 0, 0, 1, 1, 1], dtype=int32) 
# the values (0,1) tell you to what cluster does every of your data points correspond to 

#You can predict new points with 
kmeans.predict([[0, 0], [4, 4]]) 

#array([0, 1], dtype=int32) 

#or see were the centres of your clusters are 
kmeans.cluster_centers_ 
#array([[ 1., 2.], 
#  [ 4., 2.]]) 
+0

Ja, ich habe es schon tryed, aber mit kmeans.labels_ es mir ein 1D nur geben Array, ich will, dass es mir und Array wie Eingabe-Array geben und jedes Element wird auf die Nummer des Clusters geändert, in dem es zugewiesen wurde –