[python]tensorflowでロジスティック回帰やってみた

広告

今回はテンソルフローというライブラリを使ってロジスティック回帰をやってみます。ロジスティック回帰というのは、簡単に言えば、単層パーセプトロンの出力を「0か1」の離散値ではなく、0~1の連続値で出力するやつです。

もちろんディープにしても同じです。活性化関数にシグモイド関数を使っているので、、、という数学の話は別の記事でやろうと思いまして、今回は実装のコードを紹介します。

以前の機械学習の記事でAND回路を学習する単層パーセプトロンをやってみました。そのコードに関してはこちら

pythonで単層パーセプトロン

入力はいつものようにCSVファイルを使用します。今回も学習するのはAND回路です。

これを「AND.csv」として保存します。もちろんデータを変えればOR回路でもNANDでもできます。これを実行ファイルと同じディレクトリにおいておきます。

実行するコードは以下の通りです。

学習する回数のことをエポックといい、今回は500にしました。また、実行時間は環境によって左右します。tensorflowのGPU版を使っているのかや、CPUのコア数に依存するかとは思います。あくまで参考までに。

そして実行結果がこちら。

実行時間はあっという間です。500ですからね。

無事に学習できていそうですが、[1,1]のときの出力が0.87というのはやや心もとないですね。

というわけでエポックを10倍の5000にして実行してみました。

そうするとかなり制度が向上していることがわかります。実行時間はまだまだ大したことないですね。

おまけに5万で挑戦してみました。

精度がかなり上がっていますね!しかしエポックを増やしても[0,1]と[1,0]のときの確率はそこまで下がらないようです。

こんな単純なモデルで本気出しても仕方がないっちゃないかもしれませんが。

というわけでご精読いただきありがとうございました!

pythonで機械学習をしたいなら次の本がオススメです。数式変形も丁寧で原理がわかりやすいです。何より基本中の基本から徐々にステップアップしているので初学者にも分かりやすい内容になってます。本の内容のソースコードも全てGithubに上がっているので、すぐに試せるので便利です。

関連記事