やってみよう!機械学習 - 教師あり学習
機械学習ライブラリ scikit-learnを使います。以下公式サイトです。
簡単に、さっそく実行できるような環境をご紹介。
ログインする必要がありますが機械学習ライブラリも使えるようになっている便利なサービスです。
Iris(アヤメ)の品種を分類してみましょう。
まずデータセットですが、
4つの測定値(特徴量)と3種類の花(Setosal、Versicolor、Versinica)がセットになったデータが150個を使えるようにします。
from sklearn import datasets
分類する方法"サポートベクターマシン"を指定します。
from sklearn import svm
"SVM"とはSupport Vector Machine (SVM)
次にデータセットを使えるように変数に入れます。
iris = datasets.load_iris()
ここで4つの特徴は
print(iris.data)
でデータを出力してみます。
[5.8 2.6 4. 1.2]
[5. 2.3 3.3 1. ]
[5.6 2.7 4.2 1.3]
[5.7 3. 4.2 1.2]
・
・
と4つのデータがたくさん出てきます。
データの数は便利な関数"shape"でみてみます。これでデータ全体の数と1つのデータ量がわかります。
print(iris.data.shape)
出力すると
(150, 4) ・・・ 150のデータ、4種類の個別データ
"iris.data"の対になる教師データも出してみます。
print(iris.target)
として実行すると
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2]
4つの入力データに対して、1つの値で正解が示されています。
[がくの長さ, がくの幅 , 花びらの長さ, 花びらの幅] → 花の種類
という感じです。
これで、教師あり学習ができるようになりました。
分類するアルゴリズム"サポートベクターマシン"を指定します
clf = svm.SVC()
学習します。fit()を使います。変数clfに学習した結果を入れます。
clf.fit(iris.data, iris.target)
学習したモデル"clf"を利用し、predict()で予測します。
print(clf.predict([[1.4, 3.5, 5.1, 0.2]]))
これで予測が出ます。
結果が出ました。
なので"1"に対応するのは"Versicolor"を予測したということになります。
整理します。
まず、学習するためのテストデータとその答えである教師データを用意して学習したモデルを作ります。
そして、そのモデルを使って予測するという流れになります。
いろんなサイトで機械学習説明されていますが、検証の工程が入っているものが多くてわかりにくく感じていましたので単純にモデルを作って予測という流れを整理してみました。
流れは比較的単純です。発展形のデープラーニングも流れは同じでモデルの作り方がより複雑に、いろんな組み合わせができるという感じです。