番外編2 ニューラルネットワークの応用(Courcera 機械学習より)

さて、今回は番外編ということで”Courcera Machine Learning Week 4”より、非常に難解だったニューラルネットワークを少し応用して遊んでみたいと思います。

今回やりたいことは、前回に続いて2つ目です!

  1. 与えられたデータをトレーニング/テストセットに分けてモデルの精度確認
  2. 予測の結果、学習させたモデルによって間違えて予測した数字の表示
  3. ペイントで書いた数字を入力して予測!

※前提として、Courcera Machine Learning Week 4の課題が終わっていることとします。もし終わっていない方はこっそり参考にしてください。

2.間違えてしまった画像データの確認


ニューラルネットワークでも予測が困難なへたくそな字を確認するコードを作っていきたいと思います。

まずはpred関数に学習済みシータ1,2とまだ見ぬデータX_testを入れて予測してみましょう。pred_testに予測結果が入ります。

pred_test = predict(Theta1, Theta2, X_test);

続いて間違えて予測した画像データが何番目のなのかカウントしていきます。

ここでは、for文を用いて一つずつpred及びyを照らし合わせていきます。pred(i)においてy(i)の値と差があった行番号を行列mis_numに格納していきます。

t=size(pred,1);
mis=zeros(t,1);
mis_num=0;

for i=1:t
  if (pred(i)~=y(i))
    mis(i)=1;
    mis_num=[mis_num i];
  endif
end

そして得られたmis_num行列をdisplayData関数に入れてみましょう。

displayData(X_test(mis_num,:));

するとこんな感じに表示されます。

左:間違えて予測した画像データ 右:元のデータからランダムに抽出した画像

確かに、人間の目で見てもこれは何て書いてあるかわからない!というのが多い気がしますが、明らかに分類できよこれ!ってのもありますね。

こうして考えると人間の目は相当優秀な分類器なんですね。

さて、次回は実際に自分で書いた数字を分類させたいと思います!

前へ

次へ

投稿が見つかりません。

コメント

タイトルとURLをコピーしました