機械学習のhello,worldプログラミング(アヤメの品種を推測する。4つのデータの組み合わせから)
環境構築は、Google Colaboratory + pythonが一番楽だね!
参考URL
【初心者向け】Pythonを使って機械学習プログラミング体験してみよう!
https://colab.research.google.com/
Google Colaboratoryは、ブラウザから直接Pythonを記述、実行できるWebサービス。
python環境構築が不要なので楽(Googleアカウントが必要)
Q, NoteBookって何?
A, Colabにおけるファイルのようなのもの
コード+テキスト(MarkDown記法で記述するコメントやドキュメント)が、セルという塊で表現されている。
1, hello, worldプログラミング
ノートブックを新規作成。最初のセルが自動生成されているので、
print(‘hello, world!’)
と入力。左側にある再生ボタンを押すと実行される。
2, 左上の「+テキスト」を押すと、コードとは別に「リッチドキュメント」が挿入できる。
MarkDown記法で記述する。右半分がプレビューになっていて、リアルタイムで表示される。
3, ファイル保存
Ctrl+Sか、メニューのファイルから保存。Untiled1.pynbという仮の名前になっているので名前の変更で
helloworld.ipynb
にする。IPython Notebook(*.ipynb)
最初のIは、Interactive(対話的な) Pythonらしい。
4, Pythonライブラリが充実!
numpy = 数学ライブラリ
matplotlib = グラフ描画ライブラリ
pandas = データ解析ライブラリ
sklearn = 機械学習ライブラリ
単純なグラフの表示
1 2 3 4 5 6 |
import numpy as np import matplotlib.pyplot as plt x = np.arange(0, 10, 0.1) plt.plot(x) plt.show() |
5, 最初の機械学習。アヤメの品種を推測する。
a, 花弁の長さ
b, 花弁の幅
c, ガクの長さ
d, ガクの幅
の4つの変数が与えられるので、
0: Setosa
1: Versicolor
2: Versinica
のどれかに分類する(教師あり学習)
6, 実際にデータを取得して表示してみる
1 2 3 4 5 6 7 8 |
from sklearn import datasets # データセット・ライブラリ from sklearn import svm # 機械学習ライブラリ # アヤメのデータを変数に格納(150個) iris = datasets.load_iris() # 4種類のデータ(花弁の長さ・幅、ガクの長さ・幅)と品種が、配列で表示される print(iris.data, iris.target) |
7, データから機械学習させて、適当な値から、アヤメの品種を推測させてみる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
from sklearn.model_selection import train_test_split # データを学習用と検証用に分けるライブラリ from sklearn.ensemble import RandomForestClassifier # ランダム・フォレスト分析ライブラリ from sklearn import svm #機械学習ライブラリ from sklearn.metrics import accuracy_score # 機会学習の評価ライブラリ # アヤメの品種データ iris = datasets.load_iris() # 4種類のデータと、正解の品種を、それぞれの変数に格納する x, y = iris.data, iris.target # トレーニングデータ(学習させるデータ) # テストデータ(検証用データ)に分ける x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=1) # 機械学習モデルに、SVM(サポートベクターマシン)というアルゴリズムを指定する model = svm.SVC() # fitというメソッドを実行するだけで、機械学習してくれる model.fit(x_train, y_train) # 機械学習させた後に、どのぐらい出来が良いか評価する(1に近いほど良い?) pred = model.predict(x_test) print(accuracy_score(y_test, pred)) # 適当な4種類のデータを、学習済みモデルに渡して、品種を推測させてみる(0: Setosa, 1: Versicolor, 2: Versinica) # 150個のデータの最初の方を値に書き換えると、たしかに0という結果になる! print(model.predict([[1.4, 3.5, 5.1, 0.2]])) |
機械学習の評価: 0.9736842105263158
アヤメの品種: [2]
たぶん、これが機械学習のhello,worldプログラミングだと思う。
理論が全く分からなくても、ネットワークやファイル圧縮と同じように、ライブラリを導入・メソッド実行するだけで機械学習が出来る!