機械学習記12日目続き ~ MLP Classifierクラス
scikit-learnでは、バージョン0.18.0からニューラルネットワークを利用できるようになりました。そこで、scikit-learnのMLPClassfierクラスを使って機械学習を行ってみます。
MLPClassifierクラスは、多層パーセプトロン(MLP)方式で実装されていて、書式は図1のようになります。
▶ニューラルネットワークでアヤメを分類する
まずは、MLPClassfierを使って、irisデータセットの分類を作ってみましょう。irisデータセットを読み込み、訓練用のデータと評価用のデータに分けます。
MLPClassifierで学習モデルを生成して、fit関数で学習します。パラメータは、すべてデフォルトの状態で使用しています。
ワーニング(警告)が出ました。評価用データを分類して正解率を表示してみます。
少し正解率が低いようです。どうやらワーニング表示されているパラメータ「max_iter」(試行回数の最大値)がデフォルトで少ないのかもしれません。パラメータの値を増やしてもう一度学習させます。
試行回数の最大値(max_iter)の値を増やしたらうまくいきました。
正解率が上がりました。ニューラルネットワークは、デフォルトのパラメータ設定がキビシイですね。
▶簡易手書き数字データの認識
digitsデータセットでも確認したいと思います。digitsデータセットを読み込み、訓練用と評価用に分けます。
MLPClassifierの学習モデルを生成して学習を行います。パラメータのmax_iterは、1000にしておきます。
これで学習が完了したので、精度を評価します。
他のアルゴリズムより、若干成績が良い気がします。どのように分類したのか、数字ごとに見てみたいと思います。
こちらもパラメータをいろいろと変更しながら、ミスを犯しやすいデータの特徴などを調べ、試行錯誤する必要があります。ただ、確実にわかったことは、scikit-learnを使えば、ニューラルネットワークをはじめとした様々な機械学習アルゴリズムを、ほとんど同じコードで簡単に試せるということです。