【Python】scikit-learnで手書き数字を判定してみた

 

こんにちは。のっくん(@yamagablog)です。

 

この記事では機械学習を使って手書き数字の認識にチャレンジしてみます。

 

 

データセット

 

scikit-learnに付属している手書き数字データセットを使ってみます。

 

「Optical Recognition of Handwritten Digits Data」、手書き数字の光学認識データセットと言う長い名前のデータセットです。

 

8×8ピクセルの手書き数字データが5620個用意されています。

 

https://archive.ics.uci.edu/ml/datasets/optical+recognition+of+handwritten+digits

 

 

環境構築

 

ローカルのMacでやっても良いのですが、今回はUbuntuにsshでアクセスしてその上で環境構築をします。

 

UbuntuにAnacondaがインストール済みの前提で進めていきます。

 

digitsと言う名前の仮想環境を作ります。anacondaのパッケージをインストールするように指定しています。Pythonのバージョンは3.6にします。

 

 

これで、準備が出来ました。macからjupyterにアクセスしてコードを書いていきます。

 

学習

 

 

実行してみると、、

 

 

高精度で識別出来ました。

 

以下のコードを実行して、学習済みデータを保存しておきます。

 

 

自分で書いた文字をテストする

 

さて、ここで自分の書いた文字を試してみます。

 

ちなみに、画像の読み込みにはcv2を使うのですがインポートしてみるとエラーが出ました。

 

 

ん? なんだ?

 

「libSM.so.6が無いよ。ばかやろー」

 

と怒られています。以下のコマンドで必要なライブラリをubuntuに入れましょう。

 

 

これで解決です。

 

では私の書いた美しい「3」を認識できるか試してみます。

 

 

「three.png」と言う名前で保存しました。

 

 

さぁ、3来い!

 

 

ネコ
違ってるー!!

 

のっくん
残念だったねw まぁ、3と9似てるからしょうがないよねw

 

リベンジで「2」を書いてテストしてみました。

 

 

 

今度は合ってますね。めでたしめでたし。

 

参考

 

「PythonによるAI・機械学習・深層学習アプリ」のつくり方

 

ABOUTこの記事をかいた人

のっくん

理系院卒で大企業の研究所に就職。 趣味はプログラミング、レアジョブ英会話、筋トレ、旅行。 Twitter:@yamagablog