
Pythonで機械学習を検証する環境を構築しました Keras + TensorFlow編
Pythonで機械学習を検証する環境を構築することにしました
回帰による日経平均株価の予測で問題に遭遇し、途方に暮れています。
なぜか、作成したAIモデルに当日の日経平均株価の情報を入力すると、本来であれば翌営業日の日経平均株価の情報を期待しているのに、前営業日の日経平均株価の情報が出力されるという状況なのです。
詳細は、下記の記事を参照ください。
使用しているNeural Network Consoleを疑っているわけではないのですが、問題を解決する良いアイデアが浮かびません。
そこで、別の機械学習を検証する環境を構築し、同じAIモデルと説明変数および目的変数で、同じ問題に遭遇するか否かを確認することにしました。
インターネットにてPythonで使用可能な機械学習のライブラリを調べたところ、非常に多くの種類が存在することを知りました。
私が扱うのは、機械学習の中でもニューラルネットワークです。
それに適しており、特にメジャーなものとして、Keras + TensorFlowの組み合わせを試してみることにしました。
Kerasを選んだ理由は、ニューラルネットワークを記述する文法が直感的で分かりやすかったからです。
また、TensorFlowは、Kerasを動かすのに必要とのことです。
Python環境へのKeras + TensorFlowのインストール方法
Python環境へのKeras + TensorFlowのインストール方法は、以下の通りです。
先ず始めに、TensorFlowをインストールします。
> conda install -c conda-forge tensorflow=2.10.0
私は、Python環境を構築するためにAnacondaを使用しているため、condaコマンドを使用しています。
Anacondaを使用していない環境では、pipコマンドを使用します。
正常にTensorFlowのインストールが終了しました。
続いて、Kerasをインストールします。
> conda install -c conda-forge keras
上記のコマンドを実行したところ、以下のログが表示されました。
Collecting package metadata (current_repodata.json): done
Solving environment: done
==> WARNING: A newer version of conda exists. <==
current version: 22.9.0
latest version: 24.5.0
Please update conda by running
$ conda update -n base -c conda-forge conda
# All requested packages already installed.
Retrieving notices: ...working... done
どうやらcondaのバージョンが古いという意味のWARNINGのようです。
「All requested packages already installed.」が、Kerasのことを指しているのか良く分かりません。
TensorFlowのインストール時は、自動でインストールログが全て消去された後に「done」のみが表示されました。
もしかしたら、TensorFlowのインストール時も、Kerasと同じくcondaのバージョンに対するWARNINGが表示されていたのかもしれません。
Pythonのライブラリパッケージをインストールした場合、ログが勝手に消去されてしまいます。
この仕様は何とかならないものでしょうか。
分かりにくくてしょうがありません。
さて、Kerasのインストール状況については、下記のコマンドを使用して確認することができました。
> conda list keras
(中略)
# Name Version Build Channel
keras 2.10.0 pyhd8ed1ab_0 conda-forge
condaのバージョンに対するWARNINGを無視すれば、Keras + TensorFlowのインストールは完了したはずです。
ライブラリパッケージ間の依存関係を確認
念のため、Keras + TensorFlowをインストールした後に、ライブラリパッケージ間の依存関係を確認してみました。
> pip check
nnabla 1.38.0 requires boto3, which is not installed.
tensorflow 2.10.0 requires keras-preprocessing, which is not installed.
tensorflow 2.10.0 requires libclang, which is not installed.
tensorflow 2.10.0 requires tensorflow-io-gcs-filesystem, which is not installed.
tensorflow 2.10.0 has requirement protobuf<3.20,>=3.9.2, but you have protobuf 3.20.1.
幾つか問題があるようです。
依存関係に関する問題
インストールが必要なライブラリパッケージ
boto3
keras-preprocessing
libclang
tensorflow-io-gcs-filesystem
バージョンの調整が必要なライブラリパッケージ
protobuf(現状3.20.1 → 3.9.2以上、3.20未満とすべき)
先ずは、必要なライブラリをインストールします。
> conda install -c conda-forge パッケージ名
condaコマンドでインストールができないものはpipコマンドを使用しました。
続いて、protobufのバージョン問題についてです。
この問題についてインターネットで調べたところ、無視しても良いとのコメントを見つけました。
このため、とりあえずスルーします。
Keras + TensorFlowの動作確認
下記のコマンドを実行し、TensorFlowの動作確認を行いました。
> python -c "import tensorflow as tf; print( tf.__version__ )"
2.10.0
期待通り、TensorFlowのライブラリパッケージがインポートされ、バージョンが表示されました。
続いて、Kerasの動作確認を行いました。
> python -c "import keras; print( keras.__version__ )"
2.10.0
こちらも期待通りでした。
protobufのバージョンに関しては、何か問題があるまでスルーとします。
以上で、Keras + TensorFlowのインストールは終了です。