以前、アヤメの品種データを使った機械学習のうち「分類」のサンプルコードを紹介した。
「分類」は記事内でも紹介しているとおり、過去の特徴量データを学習させたモデルを使い、決められた目的変数を求める「教師あり学習」にあたるが、今回行う「クラスタリング」は目的変数を持たない「教師なし学習」にあたる。
クラスタリングは、あるデータ群の中から特定のパターンを見つけ出す時に使う分析手法だ。
今回は、scikit-learnで提供されているアヤメの品種データを使って、クラスタリングを行う方法を紹介する。
データセットの用意
まずはライブラリ・データセットを読み込む。
import pandas as pd
from sklearn.datasets import load_iris
data_set = load_iris()
df = pd.DataFrame(data_set.data, columns=data_set.feature_names)
print(df.shape)
df.head()
k平均法を用いたクラスタリングの実行
クラスタリングにはいくつかの手法があるが、今回は「k平均法」と呼ばれる手法を使う。
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=3, random_state=0)
clusters = kmeans.fit(df)
df['cluster'] = clusters.labels_
print(df['cluster'].unique())
df.head()
3行目で機械学習モデルを用意しており、KMeansの第一引数n_clustersには分類する数を指定している。
4行目でクラスタリングの実行。
5行目で元のデータフレームに、分類されたクラスター(連番)を「cluster」列として連結している。
出力結果は以下のとおり。
右端に新たに「cluster」列が加わり、0〜2の分類値が追加されている。
たったこれだけのコードで、データの特徴量からパターンを分類するクラスタリングを行うことができる。
Pythonのライブラリはかなり扱いやすい。