15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【機械学習】手書き文字データで分類器のパフォーマンスチェックをしてみる

Last updated at Posted at 2016-10-28

こんにちは。
林@アイエンターです。

前回のブログでは、scikit-learnのk平均法アルゴリズムとOpenCVを用いて、画像の減色処理を行いました。

今回は、scikit-learnに用意されている、手書き文字データのサンプルを用いて
複数の分類器の簡単なパフォーマンスチェックを行ってみます。

手書き文字データの読み込み

scikit-learnのdatasetsには、手書き文字データのサンプルが用意されていますので、それを読み込みます。
shot1.png

説明変数Xが0〜9のイメージデータの配列、目的変数Yが各イメージに対応する0〜9の数字の配列になっています。

Xデータの先頭データはこのような64個の数値配列になっています。
shot2.png

実際はこの配列は、画像としては8×8のサイズのイメージデータなので、
配列を加工して、先頭の20個のデータを表示してみます。
イメージはグレースケールのピクセル画像で表示します。

shot3.png

K-fold交差検証

今回、分類器の精度を「K-fold交差検証」を用いて評価します。
「K-fold交差検証」とは、標本群をK個のブロックに分割して、K-1個のブロックを訓練データ、残りの1ブロックをテストデータとして評価します。
また、テスト用のブロックも1番目からK番目に切り替えながら評価していきます。
以下のようなイメージです。
shot4.png
scikit-learnではcross_validationにK-foldが用意されています。
今回は、標本データを10分割するK-foldを用意します。
shot5.png

評価する分類器

以下の分類器をパフォーマンスチェックします。
LogisticRegressionロジスティック回帰
GaussianNBナイーブベイズ
SVCサポートベクターマシン
DecisionTreeClassifier決定木
RandomForestClassifierランダムフォレスト
AdaBoostClassifierAdaBoost
KNeighborsClassifierK近傍法

また、SVCについては、カーネルの種類を「rbf(ガウシアンカーネル)」「linear(線形カーネル)」「poly(多項式カーネル)」の3種類で確認します。

以下のような分類器インスタンスと名前を要素とする配列を用意します。
shot6.png

#パフォーマンスチェックについて
パフォーマンスチェックは、各分類器の精度と解析スピードで評価します。
精度については、K-foldでの10回の予測テストを、sklearn.metricsのaccuracy_scoreで、スコアリングして平均を取ります。
また、解析スピードは、学習(fit)から予測(predict)にかかる時間を計測して
平均を取ります。
shot7.png

以下のような結果が出力されました。
shot8.png

精度的に良い数値が出ているのが、3種類カーネルの「SVC」(サポートベクターマシン)と「KNeighborsClassifier」(K-近傍法)の分類器です。

最も高い精度は、SVC-rbfですが、解析時間もそれなりにかかっているようです。
KNeighborsClassifierは精度的には2番目の数値ですが、解析スピードはSVC-rbfの4倍のスピードが出ています。

精度とスピードを総合的に評価すると、K-近傍法(KNeighborsClassifier)の分類器が、このテストでは最も高いパフォーマンスの分類器と言えるかと思います。

今回のお話はここまで!

15
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?