教師なし学習をPythonで実装してみる(PCAとk平均法)
前回、教師あり学習の回帰モデルを練習してみたので
次は教師なし学習の実装に挑戦
Pythonで実装
次元削減
PCA(主成分分析)を使って3次元データを2次元に削減
3次元のデータ読み込み
import numpy as np data = np.loadtxt('./data1.txt') data.shape (60, 3)
サクッと2次元に削減
from sklearn.decomposition import PCA pca = PCA(n_components=2) X2D = pca.fit_transform(data) X2D.shape (60, 2)
クラスタリング
データの似ているもの同士をグループにまとめる作業
k平均法を使ってみる
データを読み込んでそのまんまグラフ表示
import matplotlib.pyplot as plt from sklearn.cluster import KMeans %matplotlib inline data2 = np.loadtxt('./data2.txt') plt.plot(data2[:, 0], data2[:, 1], 'bo') plt.show()
k平均法のライブラリを読み込んで3グループに分類してみます
from sklearn.cluster import KMeans km = KMeans(3) # 3種類のグループに分ける data2_clst = km.fit_transform(data2) color = ["red", "blue", "green"] for i in range(data2.shape[0]): plt.scatter(data2[i,0], data2[i,1], c=color[int(km.labels_[i])]) plt.show()
きれいに分類されましたね
KMeans(3)の数値を変えてやると分ける数を変えることもできます
from sklearn.cluster import KMeans km = KMeans(5) # 5種類のグループに分ける data2_clst = km.fit_transform(data2) color = ["red", "blue", "green", "yellow", "black"] for i in range(data2.shape[0]): plt.scatter(data2[i,0], data2[i,1], c=color[int(km.labels_[i])]) plt.show()
5色カラフルーになりました
感想
sklaernには既にいろんなライブラリが用意されているので、正直中身のアルゴリズムわかんなくても実装も簡単にできちゃいます