以下のビデオをみた際のメモ書き。
https://www.youtube.com/watch?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal&v=cKxRvEZd3Mw
機械学習で使う2つのオープンソースライブラリ
- sckit-learn
- TensorFlow
りんごとみかんを区別するコードを書く
機械学習を使わないと、手作業のコードを多く書くことになるコード。(オレンジ色のピクセル数をカウントして、緑色のピクセル数と比較するなど。ただしこの方法は白黒写真では使えない。)
また何かマッチしない例がくると、毎回それをコードに反映しなおさないといけない。
規則を把握するアルゴリズムがあるとこれらは回避できる。機械学習ではそのために分類器Classifier(関数)を学習させる。
入力データ ⇒ Classifier ⇒ ラベル
※絵 ⇒ Classifier ⇒ オレンジ
※メール ⇒ Classifier ⇒ SPAM
これらは教師付き学習(Supervised Learning)と呼ばれ、サンプルデータからパターンを見つけて分類機を作成する。
目的:果物の種類を分別する関数を作る
果物に関する情報を入力として受取り、特徴量(測定値)に基いて出力として予測する。
sckit-learnでコード化
- sckit-learnのインストール
$ sudo pip install -U numpy
$ sudo pip install -U scipy
$ sudo pip install -U scikit-learn
① 学習データを集める
Weight | Texture | Label |
---|---|---|
150g | Bumpy | Orange |
170g | Bumpy | Orange |
140g | Smooth | Apple |
130g | Smooth | Apple |
これらが分類機に学習してほしいデータ。 | ||
学習データが良いと、良い分類器が作成できる。 |
学習データをコードで用意。
2つの変数”特徴量”と”ラベル”を用意する。特徴量は入力、ラベルは出力。
このとき特徴量のデータ型はStringではなく数値型に変えて、Bumpyは0、Smoothは1とする。またりんごは0、オレンジは1とする。
② 分類機を学習させる
今回は決定木を利用。
分類機は規則の箱
学習アルゴリズムは規則を作る手順(学習データ中のパターンを見つけることで作る)
# 分類器を作成。この時点ではただの箱。りんごやオレンジのことは知らない。
# 学習させるための学習アルゴリズムが必要
clf = tree.DecisionTreeClassifier()
sckitでは分類器オブジェクトの中に学習アルゴリズムが含まれていて、Fitと呼ばれる。
Fit = ”データ中のパターンを見つける”
clf = clf.fit(features,labels)
③ 新しい果物を分類する
分類機へ新しい果物の特徴量(150gでBumpyしている)をインプットする。
print clf.predict([[150,0]])
出力として1が返ってくるので、オレンジと分類される。
from sklearn import tree
features = [[140,1],[130,1],[150,0],[170,0]]
labels = [0,0,1,1]
clf = tree.DecisionTreeClassifier()
clf = clf.fit(features,labels)
print clf.predict([[150,0]])