041_学習用データを準備し、学習させてみよう

前回でデータの準備ができたので、ここで少し「学習・予測方法」を整理してみましょう。

目次

学習・予測方法

学習方法

digits.data:数字の画像データ
digits.target:なんの数字か
問題としてdigits.dataを渡し、答えとしてdigits.targetを渡すことで学習できます。

予測方法

手書きの画像データを、8×8のモザイク画像に変換して、さらに1行(64×1)のデータに変換する処理が必要です!

データを学習用とテスト用に分ける

上で紹介した仕組みでデータを学習用とテスト用に分割して、個数を確認してみましょう。

コード

from sklearn.model_selection import train_test_split

X = digits.data
y = digits.target

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)   # データを分割する
print("学習用 =", len(X_train))
print("テスト用 =", len(X_test))

参考資料:Python3年生機械学習のしくみ

実行結果

全体のデータの個数が1797個でしたので、75%分の1347個25%分の450個に分けられていることが分かりました!

モデルを選んで学習させる

モデルはSVMを使います。また、非線形分類のkernel=”rbr”を指定して、境界線の複雑さはgamma=0.001としてしてみましょう。

コード

#1 訓練データでガウスカーネル法のSVMで学習モデルを作成
#2 テストデータで正解率を調べる


from sklearn import svm
from sklearn.metrics import accuracy_score

model = svm.SVC(kernel="rbf", gamma=0.001)    #1
model.fit(X_train, y_train)

pred = model.predict(X_test)    #2
score = accuracy_score(y_test, pred)
print("正解率:", score*100, "%")

参考資料:Python3年生機械学習のしくみ

実行結果

正解率が99.5%ととても高い数値が出ましたね。これは、学習データと同じような画像データを渡したときの正解率だからです。

次回は、数字の画像を読み込んで表示をさせてみましょう!

目次