こんにちは、エンジニアのオオバです。
前回記事からの続きです。
最低限の機械学習の知識を手に入れるため勉強中。
本書の4章に突入し、やっとタイトル通りの機械学習内容に入ってまいりました。
機械学習の第一弾として、等値演算を学習させてみます。
※本書ではXOR演算学習が紹介されています
等値演算とは、AとBの2つの値が同じであれば真、異なれば偽であるという、プログラム的には日常的によく使う演算です。
今回やること
- 学習用データを用意する
- 学習用データで学習させる
- テストデータで学習の度合いを確認する
→11万文字で徹底解説した「DOTweenの教科書」Unityアニメーションの超効率化ツールはこちら
事前準備
Python向け機械学習の定番フレームワークscikit-learn
(サイキットラーン)を使うため、以下のコマンドでインストールします。
pip install -U scikit-learn scipy matplotlib scikit-image
SVMというアルゴリズムを利用して機械学習をさせます。
先にサンプルコードを御覧ください。
ポイントをかいつまんで見ていきます。
1.学習用データを用意する、2.学習用データで学習させる
学習用データを用意して、データとラベルで分けます(23行目辺り)。
<GoogleAdsense type='1' />
## 学習させるためにデータとラベルに分ける
data = []
label = []
for row in equal_data:
a = row[0]
b = row[1]
labelstr = row[2]
data.append([a, b])
label.append(labelstr)
34行目のSVMオブジェクトのfit関数で学習させるわけですが、その関数仕様 (第1引数 : データ, 第2引数 : ラベル)に合わせます。
## データの学習
clf = svm.SVC()
clf.fit(data, label)
3.テストデータで学習の度合いを確認する
<GoogleAdsense type='1' />
## テストデータ用意
## 0番目と1番目が比較数値
## 2番目が結果0は偽、1だと真(ラベル)
test_data =[
[40, 41, 0],
[1, 1, 1],
[90, 99, 0],
[3, 10, 0],
[20, 20, 1],
[53, 53, 1],
[2, 2, 1]
]
<GoogleAdsense type='1' />
## データとラベルを分ける
data = []
label = []
for row in test_data:
a = row[0]
b = row[1]
labelstr = row[2]
data.append([a, b])
label.append(labelstr)
37行目でテストデータ(test_data)を定義し、先と同様にデータとラベルに分けます。
## データを予測
pre = clf.predict(data)
60行目のpredict
関数で予測されたデータを受取り、学習度合いを確認します。
ちなみに今回の正解率は、正解率: 6 / 7 = 0.8571428571428571
でした。
学習データがまだまだ足りないようです。
最後に
本書でやっと本題の機械学習の内容になりました。面白いです。
参考
この記事が気に入ったらフォローしよう
オススメ記事
検証環境
- macOS 10.12.6
- Selenium 3.7.0
- PhantomJS 2.1.1
- Python 3.6.3
- Node.js 9.0.0
- Requests 2.18.4