【Scilab】手書き数字文字認識をしてみた【部分空間法】

公開日: : 最終更新日:2018/08/08 Scilab , ,

Scilab で、機械学習の手法の1つの「部分空間法」を使って手書き数字文字認識をしてみました。

とはいっても、以下のサイトに Scilab のソースコードと手書き文字データがあるので、その通りに実行させてもらいました。

http://web.tuat.ac.jp/~s-hotta/ss2008/

手書き数字文字データ

手書き数字文字データには、USPSというものを使います。USPSとはアメリカ合衆国郵便公社のことで、おそらく、そこが公開している手書き文字データだと思われます。

データは、以下の4つのファイルに分かれています。

  • test_data.txt -> テストデータを格納した 256 × 2007 の行列
  • test_label.txt -> テストデータのラベルを格納した 2007 × 1 のベクトル(「0」~「9」のいずれかが入る)
  • trai_data.txt -> 学習データを格納した 256 × 7291 の行列
  • trai_label.txt -> 学習データのラベルを格納した 7291 × 1 のベクトル(「0」~「9」のいずれかが入る)

学習データを使って学習をしてモデルを構築して、テストデータで識別の精度を確認します。

プログラムの実行

基本的に、

  • step1.sci
  • step2.sci
  • step3.sci

の3つのステップに分かれていて、それぞれ実行していきます。

ただし、そのままではエラーで実行できなかった箇所があったので記載していきます。

step1.sci を実行

step1.sci では、手書き文字データ(行列になっている)について、直交基底を計算し、各基底による寄与率(固有値)の特性を計算します。

実行方法は、コンソール画面で、step1.sci の置いてあるディレクトリまで移動(cd コマンド)し、以下のコマンドを実行します。

ただし、Scilab の Version 6.x.x を使っていたら、

fscanfMat: ファイル をオープンできません.

のようなエラーが出てしまったので、参照サイトのバージョンと合わせて、「Scilab 4.1.2」をインストールし直したら、無事実行できました。

ちなみに、「Scilab 4.1.2.exe」は、以下からダウンロードしました。

http://www.maizuru-ct.ac.jp/control/kawata/study/book2/book2_page.html

step2.sci を実行

step2.sci では、直交展開したものを可視化します。

step2.sci も同様に以下のコマンドで実行します。

すると、以下のようなエラーが出てしまいます。

imshow(allIMG);
!–error 4
undefined variable : imshow
at line 41 of exec file called by :
exec(‘step2.sci’);

画像を表示するための toolbox がインストールされていなかったのが原因のようなので、インストールします。

以下から、sivp-0.4.3.exe をダウンロードします。

https://sourceforge.net/projects/sivp/files/sivp-win-binary/0.4.3/

無事にインストールできたら、メニューに「toolboxes」が追加されます。

【インストール前】

【インストール後】

toolboxes」->「SIVP-0.4.3」を実行します。

–>mode(-1);
SIVP – Scilab Image and Video Processing Toolbox 0.4.3
shared archive loaded
Link done
shared archive loaded
Link done
shared archive loaded
Link done
shared archive loaded
Link done
shared archive loaded

再度、step2.sci を実行すると、以下のような画像が表示されます。

これは、上段の画像が、対象パターンを表していて、下段が「0」~「9」の各クラスの基底により直交展開し、そのうち寄与率上位 30個 により近似したパターンを表しています。

step3.sci を実行

step3.sci では、文字認識の識別結果を表示します。以下のコマンドで実行します。

「CONF」と入力すれば、混合行列(confusion matrix)を表示できます。

以上が、「部分空間法」を使った手書き数字文字認識でした。

関連記事

【Scilab(サイラボ)】フリーの MATLAB のインストール方法。

Scilab(サイラボ)は、数値計算・数式処理・グラフィック表示に特化したプログラム言語のことです。

記事を読む

【MT4】日付と時間を指定してPCを自動起動させる方法【DELL】

今回は、日付と時間を指定してPCを自動的に起動させる方法について紹介し

【MT4】PCが再起動しても自動的に起動させる方法【FX自動売買】

今回は、FX 自動売買用のツールの MT4 で、実行しているPCが再起

【MT4】複数口座を同時に起動させる方法【FX・CFD】

今回は、MT4(メタトレーダー4)で複数口座を同時にログインし、起動さ

【MQL4】スプレッドを取得する方法【MT4】

今回は、MQL4 で対象通貨ペアのスプレッドを取得する方法について紹介

【楽天CFD】取引口座を開設してみた【MT4】

今回は、楽天CFDの取引口座(本番口座)の開設方法について紹介します。

→もっと見る

PAGE TOP ↑