こんにちは、Mottyです。
今回は分類(クラスタリング)をPythonで行いました。
##分類とは
統計や機械学習においての分類とは、データを似た特徴のグループに分類することを指す。
事前に基準がない状態で行うので、「教師なし学習」の1つとなる。
#KMeans法
K平均法とはクラスタの平均を用いて与えられたクラスターの数(k個)に分類するアルゴリズムである。各データが重心にどれくらい近いかでクラス分けをし、重心を逐次更新していくことで分類構造を最適化していく。
#Pythonで実装
KMeans.py
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs as mb
clf = KMeans(n_clusters = 3)
N = 100 #Number of sample
dataset = mb(centers = 3)
features = np.array(dataset[0])
pred = clf.fit_predict(features)
なおデータ自体が綺麗であること、Kの数が適切であること、アルゴリズムの選択が適切である事条件が揃っていない場合はこのように綺麗に分けられないケースが考えられる。
#異常値が存在する場合
NOISE = [25,25]
features = np.append(features,NOISE).reshape(-1,2)
#クラスタ数が適切でない場合
dataset = mb(centers = 4)
#分類アルゴリズムがそもそもKMeansに適していないケース
makemoons.py
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs as mb
clf = KMeans(n_clusters = 2)
X1,y1 = make_moons(noise = 0.05, random_state=0)
pred1 = clf.fit_predict(X1)
for i in range(2):
labels = X1[pred1 == i]
plt.scatter(labels[:,0],labels[:,1])
plt.show()
#終わりに
分類アルゴリズムにも様々あり、今回はそのうち代表的なものの1つであるKMeans法について記述しました。
SVMやランラムフォレスト等の分類についても後々記述していきたいと思います。