2017-11-14 7 views
-1

私は1000個の要素を持つ形状[1000、]の1D配列にいくつかのデータを持っています。私はこのデータに対してk平均クラスタリングを10のクラスタ数で適用しました。 k-meansを適用した後、各クラスターの形状[1000、]と重心[10、]のクラスターラベル(id)を得ました。 labels配列は、0から9までの値を1000要素のそれぞれに割り当てます。しかし、私は各要素がクラスタIDではなく重心を示すようにしたい。どうすればこれを達成できますか?k-meansを使って重心を抽出することは、Pythonでクラスター化することを意味しますか?

from sklearn.cluster import KMeans 
kmeans = KMeans(n_clusters=10) 
kmeans.fit(data) #data is of shape [1000,] 
#learn the labels and the means 
labels = kmeans.predict(data) #labels of shape [1000,] with values 0<= i <= 9 
centroids = kmeans.cluster_centers_ #means of shape [10,] 

上記のコードでは、クラスターIDの代わりに[1000、]配列の各要素のそれぞれの重心を求めます。

答えて

2

は思えます。

centroid_labels = [centroids[i] for i in labels] 
+0

これは、この問題を解決します。 +1してくれてありがとう – Sansk

0

ただ、ルックアップテーブルとしてcentroids配列を使用する:リスト内包がうまく機能するであろうように

samplesCentroids = centroids[labels] 
関連する問題