K-Means:Pythonでクラスタリング

機械学習




Python+sklearn

アヤメのデータセットを使います。

今回は、散布図を使って図示していきたいので、2変数しか使用しません。
“sepal length”と”sepal width”のみを使用します。
(PCAなどで次元削減してもいいのかも)

K-meansでcluster

実際のラベル

プログラム

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

from sklearn.cluster import KMeans

from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target

demo_X = X[:,:2]

kmeans = KMeans(n_clusters = 3, init = 'k-means++', random_state = 1)
y_kmeans = kmeans.fit_predict(demo_X)

plt.scatter(demo_X[y_kmeans == 0, 0], demo_X[y_kmeans == 0, 1], s = 50, c = 'red')
plt.scatter(demo_X[y_kmeans == 1, 0], demo_X[y_kmeans == 1, 1], s = 50, c = 'blue')
plt.scatter(demo_X[y_kmeans == 2, 0], demo_X[y_kmeans == 2, 1], s = 50, c = 'green')
plt.savefig('iris_kmeans_cluster.png')
plt.show()

plt.scatter(demo_X[y == 0, 0], X[y == 0, 1], s = 50, c = 'm')
plt.scatter(demo_X[y == 1, 0], X[y == 1, 1], s = 50, c = 'y')
plt.scatter(demo_X[y == 2, 0], X[y == 2, 1], s = 50, c = 'k')
plt.savefig('iris_kmeans_true.png')
plt.show()

メモ

k-means algolism
step1:choose the number K of cluster

step2:select at random K points.
the centroids(not necessarily from your datset)

step3:Assign each data point to the closest centroid
that forms K clusters

step4:Compute and place the new centroid of each cluster

step5:Reassign each data point to the new closest centroid.
If any reassignment took place, go to step4 ,otherwise go to FIN

参考

タイトルとURLをコピーしました