AIプログラミング

機械学習-文字認識 (プログラム)

更新日:

機械学習-文字認識 (プログラム)

sklearnで機械学習の文字認識をおこなってみます。sklearnでは練習用として予め1797個の画像データがあり、その画像データが0~9のどの数値に合致するかの正解データを持っています。この練習用のデータを機械学習用898個分、残りの899個分を評価用として分割し推定を行います。その後、推定した結果と予め用意していた正解データを突き合わせて正答率を表示するプログラムを作成します。

教師あり学習のサンプルとしてサポートベクターマシーンを試してみます。

使用するデータ

全データ :1797件 (学習用:898件、評価用:899件)
属性データ:0~9の画像データ
正解ラベル:数値データ(0~9)

ソースコードの流れ

1、準備作業
2、各種データの確認
3、サポートベクターマシーンの準備
4、データを学習用/評価用に分割するための準備作業
5、データを学習用/評価用に分割
6、機械学習
7、評価
8、評価の分析

ソースコード

ソースコードです。ソースコードの詳細は後で説明します。

 

ソースコードの詳細

準備作業

sklearnから今回の練習用のdigitsをインポートします。

各種データの確認

画像データとして8×8の画像データが存在します。5620件とありますが実際にカウントした結果は1797件でした。
8×8の画像データとなります。
0~9までの数値が正解ラベルとして用意されています。
1797件の正解が用意されています。

サポートベクターマシーンの準備

サポートベクターマシーンをインポートします

データを学習用/評価用に分割するための準備作業

データを学習用/評価用に分割するためにINDEXを準備します。最初の半分のINDEXは0~897 残りのINDEXは898~1796になります。

データを学習用/評価用に分割

属性データと正解ラベルを学習用と評価用にコピーします。att_は属性用、lab_は正解ラベルです。

機械学習

学習用属性データと学習用正解ラベルを機械学習させます。

評価

評価用属性データを投入し、正答率を求めます。今回の結果では97%の正解率でした。

評価の分析

左側が今回実施した評価の結果で、右側が予め用意していた正解データです。同じ結果の場合はOK,異なる結果の場合はNGと表示されます。
NG件数 / 評価件数 = 正答率 の表示になっています。
899件中27件が失敗し正答率は約97%ということが分かります。

 

-AIプログラミング
-

Copyright© AI人工知能テクノロジー , 2019 All Rights Reserved.