pythonで機械学習を始める
最近、pythonで機械学習を勉強したり、色々試したりしています。そんな中、何度もやり直しているのが環境のセットアップ。必要なものを必要なときにインストールしてければ良いのですが、最近は「とりあえずこれだけ入れておけばOKかな」という感じに、環境を雑にセットアップすることが多くなってきました。需要があるかわかりませんが、自分としては大体のことができるので、良い感じかなと思っているので、自分のメモを兼ねて公開してみたいと思います。
MacはOS X(試した環境はiMac Retina4K 21.5-inch 2017 + macOS Sierra 10.12.6)、LinuxはUbuntu 16.04を想定しています。
pythonの機械学習環境セットアップ
とりあえず、ターミナルを開いて、下記のコマンドをひたすらコピペしていけばセットアップできるようにしてみました。コマンドの羅列の後に、詳細を説明した記事へのリンクを用意しているので、コマンドの意味とか詳しく知りたい方はそちらを参照してみて下さい。
pyenv/pyenv-virtualenv/Anaconda インストール
Macの場合は、以下コマンドでHomebrewのインストール.bashrcの設定及びpyenv/pyenv-virtualenvをインストールしましょう
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" $ cd $ curl -L -O https://raw.githubusercontent.com/karaage0703/mac-dotfiles/master/.bash_profile $ brew install pyenv $ echo 'eval "$(pyenv init -)"' >> ~/.bashrc $ brew install pyenv-virtualenv $ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc $ echo export PYENV_VIRTUALENV_DISABLE_PROMPT=1 >> ~/.bashrc $ source ~/.bashrc
Linuxの場合は、以下コマンドでpyenv/pyenv-virtualenvインストールします
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv $ echo 'eval "$(pyenv init -)"' >> ~/.bashrc $ git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv $ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc $ echo export PYENV_VIRTUALENV_DISABLE_PROMPT=1 >> ~/.bashrc $ source ~/.bashrc
あとは、以下コマンドでanacondaの仮想環境を作りましょう。mlはmachine learningの略のつもりですが、好きな名前でOKです。
$ pyenv install anaconda3-4.4.0
$ pyenv global anaconda3-4.4.0
$ conda create -n ml anaconda
$ pyenv global anaconda3-4.4.0/envs/ml
上記はpython3系となりますが、色々な事情でpython2系が良いという人は、上記の代わりに以下を実行下さい。
$ pyenv install anaconda2-4.4.0
$ pyenv global anaconda2-4.4.0
$ conda create -n ml anaconda
$ pyenv global anaconda2-4.4.0/envs/ml
上記で何をしているか詳しく知りたい方は、以下記事を参照ください。
基本的なパッケージのインストール
機械学習に(自分が)必要と考える以下のパッケージをインストールします。
- jupyter
- numpy
- scipy
- matplotlib
- scikit-learn
- pandas
- pillow(PIL)
- Open CV3
- mglearn
Open CV3とmglearn以外のパッケージに関しては、anacondaに含まれているので、何もする必要はないです。
Open CV3とmglearnは以下コマンドでインストールできます。
$ pip install opencv-python $ pip install mglearn
これで一通りの環境が揃いました。
ディープラーニング系
ディープラーニング系は別枠にしました。自分が入れるのは以下くらいです。
- TensorFlow
- Chainer
インストールは、以下でTensorFlowとkerasをインストールします。
$ pip install tensorflow $ pip install keras
以下でChainerをインストールできます。
$ pip install chainer
あと、たまにdot言語を使ってグラフ図を描くチュートリアルがあったりするので、Graphvizとpydotをインストールしておくと良いです。
GraphvizはMacだと以下でインストールできます。
$ brew install graphviz
Linuxだと基本は以下でインストールできると思います。
$ sudo apt-get install graphviz
pydotはpipを使って以下コマンドでインストールできます(Mac/Linux共通)。
$ pip install pydot
ディープラーニングのパッケージの注意点は、バージョンアップが激しく、バージョンが異なるため動かないコードが多いことです。必要に応じてバージョンを固定してインストールするようにしましょう。
例えば、以下でChainerをVer1.8.1に固定してインストールできます。
$ pip install chainer==1.8.1
詳細は以下記事参照下さい。
Jupyterの環境設定
Jupyterは、pythonの対話式のインタープリタ(pythonとコマンド打つと出てくるモード)を更に便利にしたようなもので、実験手順の記録性にも優れています。markdownやtex記法も使えて最高ですね。そんなJupyterを見やすくするために、テーマを変更してみたいと思います。
jupyterthemesをインストール
$ pip install jupyterthemes
以下でテーマの一覧を確認
$ jt -l
solarized lightが好きなのでセッティング
$ jt -t solarizedl
以下コマンドでjupyterを起動すると、見た目がテーマに応じて変わります。
$ jupyter notebook
Jupyterは以下のような感じに手軽に実験のログをとれるので便利です。再現試験にも便利そうですね。リッチなコメントのソースコード。もしくは、ソースコードが書きやすいブログと捉えてもよいかもしれません。
ちなみにJupyterでグラフを描くときは、以下の行が必要です。最初に宣言しておくのが良さそうです。
%matplotlib inline
Jupyterに関しては、他に詳しく解説しているサイトがあるので、詳細の解説はそちらに譲ります。以下など参照下さい。
Jupyter (iPython) Notebookを使って技術ノート環境を構築する方法 - MyEnigma
研究・プログラミングメモはもうこれで完璧。markdownもtexもpythonを一緒に使える jupyterが超便利!! - プロクラシスト
Jupyter Notebookをより便利に使うために、色々まとめ - Qiita
テーマ変更は、以下の記事を参考にさせていただきました。
jupyterのテーマカラーが超簡単にかっこよくなる『jupyterthemes』 - プロクラシスト
実際に機械学習のあれこれを試して見る
ここからは、セットアップした環境であれこれ試して見ましょう。今回セットアップした環境で、下記の例は全て動作します(きっと)。
SVM(Support Vector Machine)
以下3行実行すれば、irisの分類問題が試せます。
$ git clone https://github.com/karaage0703/svm-pi $ cd svm-pi $ python svm.py
実行すると、svm-pi
ディレクトリに画像が入っています。
詳しくは、以下参照下さい。
画像処理
機械学習の花形といえば画像認識(?)なので、画像処理も必須になってきますね。下記記事参照下さい。
matplotlibでグラフ書く
機械学習したら、結果の可視化は必須ですね。グラフを描きたい場合は以下記事など参照下さい。
ディープラーニング(Chainer)
Chainerを使ったディープラーニングです。バージョンは1.8.1を使っていますので、そこだけ注意ください。
ディープラーニング(TensorFlow)
Raspberry Piと書いてありますが、Macでも普通に動きますので興味あれば試してみて下さい。
まとめ
一通り現在のpythonの機械学習の環境セットアップと、今までやってきたことの一部をまとめてみました。環境セットアップも、バージョンの変化に応じて、やり方が刻々と変わっていて、pyenvを使うのは邪道とか、anacondaはダメだという意見もいるようですが、便利なものは便利なんですよね…悪貨は良貨を駆逐するというやつなのかもしれませんが、私は今のところ、この方法で困っていないので良しとしています。何が正しいかも、その人の目的やレベルによっても変わってきますからね。
また、私が機械学習の勉強のために購入して良かったと思う本も上げておきます。これらの本の学習に関しても、私は基本的に本記事で紹介した環境で実施して、問題なく動いています。よければセットで参考にしてみて下さい。
Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
- 作者: Andreas C. Muller,Sarah Guido,中田秀基
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/05/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (17件) を見る
参考記事
Pythonを書き始める前に見るべきTips - Qiita
上記の記事は、この記事の数倍丁寧です。セットアップも私のを邪道とするとこちらの記事は王道です(多分)。ただ、必ずしも正しいのが最適と限らないのが環境設定の難しいところですね。目的に合わせて選択下さい。