クラスタリング

k平均法 による IRISデータのクラスタリング

ライブラリとデータの読み込み

In [21]:
import seaborn as sns
from sklearn.cluster import KMeans

iris = sns.load_dataset("iris") 
iris.head(10)
Out[21]:
sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa
5 5.4 3.9 1.7 0.4 setosa
6 4.6 3.4 1.4 0.3 setosa
7 5.0 3.4 1.5 0.2 setosa
8 4.4 2.9 1.4 0.2 setosa
9 4.9 3.1 1.5 0.1 setosa

インスタンスの作成

k-meansクラスから iris データセット向けに設定したインスタンスを作ります。

KMeansの引数は

  • n_clusters:クラスタの数(自由に設定できます)
  • max_iter:学習のループ回数
  • init:初期値の決め方(ここではランダム)
In [0]:
kmeans = KMeans(n_clusters=3, max_iter=30, init="random" )

クラスタリング

iris.values[ : , [0:4]]:irisデータフレームの0列から4列まで使用

In [0]:
cluster = kmeans.fit_predict(iris.values[:,0:4])

結果の表示

In [24]:
iris_after = iris.iloc[:,[0,1,2,3]]
iris_after["cluster"] = ["cluster = "+str(x) for x in cluster]
 
iris_after.head(10)
Out[24]:
sepal_length sepal_width petal_length petal_width cluster
0 5.1 3.5 1.4 0.2 cluster = 1
1 4.9 3.0 1.4 0.2 cluster = 1
2 4.7 3.2 1.3 0.2 cluster = 1
3 4.6 3.1 1.5 0.2 cluster = 1
4 5.0 3.6 1.4 0.2 cluster = 1
5 5.4 3.9 1.7 0.4 cluster = 1
6 4.6 3.4 1.4 0.3 cluster = 1
7 5.0 3.4 1.5 0.2 cluster = 1
8 4.4 2.9 1.4 0.2 cluster = 1
9 4.9 3.1 1.5 0.1 cluster = 1

視覚化

In [20]:
sns.pairplot(iris_after, hue = "cluster", diag_kind="kde")
Out[20]:
<seaborn.axisgrid.PairGrid at 0x7fe67528dc10>