Pythonで機械学習アプリケーションの開発環境を構築する

  • 536
    いいね
  • 0
    コメント

Pythonで機械学習アプリケーションの開発環境、具体的にはNumpy/Scipy/scikit-learnを導入する手順について解説します。
なお、環境はPython3ベースを想定しています。

Minicondaベース(推奨)

機械学習系のパッケージはコンパイルが面倒なものが多いため、コンパイル済みバイナリをインストールできるconda(Miniconda)での環境構築を推奨します。

まずはPython本体(Python3想定)、パッケージ管理ツールであるpip、仮想環境を作成するvirtualenv、といった基本的な環境の構築を行います。
※virtualenvについては今回(condaを使う場合)は不要ですが、Pythonで開発を行うなら入れておくべきパッケージなので併せて入れておきます。

Mac/Linux

デフォルトのPythonと分けてインストールするため、pyenvを利用します。

# confirm installation
pyenv --version

# show python environments list
pyenv install -l

# install newest miniconda
pyenv install miniconda3-x.x.x

# refresh pyenv
pyenv rehash

# activate installed python environment globally
pyenv global miniconda3-x.x.x

  • pipのインストール: get_pip.pyでインストール(Python3.4を使うならensurepipでOK)
  • virtualenvのインストール: pip install virtualenv

各プロジェクトで使用するPythonを切り替えたい場合は、pyenv local x.x.xで設定できます。
なお、pyenvで新しいPython環境をインストールした後はpyenv rehashが必要です(こちら参照)。忘れがちなので注意してください。

Minicondaのインストールが完了したら、condaで、機械学習用の仮想環境ml_envの構築を行います(名前は何でもいいです)。

conda create -n ml_env numpy scipy scikit-learn matplotlib cython jupyter

作成ができたら、この機械学習用の仮想環境を有効化してみます。

source activate ml_env・・・でいいはずなんですが、pyenvを使っているとpyenvのactivateとcondaのactivateがバッティングするようで、シェルが落ちるケースがあります。
回避方法としては、condaのactivateをきちんとフルパスで指定します。conda info -eでcondaで作成した仮想環境の場所を確認し、そこのbinにあるactivateを起動します。

conda info -e
# conda environments:
#
ml_env                   /usr/local/pyenv/versions/miniconda3-3.4.2/envs/ml_env
root                  *  /usr/local/pyenv/versions/miniconda3-3.4.2

source /usr/local/pyenv/versions/miniconda3-3.4.2/envs/ml_env/bin/activate ml_env

ただ、これだと面倒です。pyenv localではMinicondaで作成した環境も指定できるようなので、pyenv local miniconda3-3.4.2/envs/ml_envの方が楽だと思います。

Windows

  • Pythonのインストール: Miniconda
  • pipのインストール: conda install pip
  • virtualenvのインストール: pip install virtualenv

※Python3.5ベースのminicondaは、Visual Studio 2015用のVisual C++ランタイムが必要になります。これがインストールされていないと、インストール時にエラーが発生するので注意(2015/11/13現在。そのうち対応されるはず。 Python 3.5 missing VCRUNTIME140.dll)。

Minicondaのインストールが完了したら、コマンドプロンプトからcondaで機械学習用の仮想環境ml_envの構築を行います(名前は何でもいいです)。

conda create -n ml_env numpy scipy scikit-learn matplotlib cython jupyter

作成ができたら、この機械学習用の仮想環境を有効化してみます。

activate ml_env

virtualenvベース(Pythonに慣れている人向け)

Minicondaを使わない場合(virtualenvを使う場合)は、Numpy/Scipyのコンパイルが必要になります。
以下では、その環境の構築手順を説明します。Python・pip・virtualenvは既に入っているものとします。

Mac

gcc/gfortranをインストールする必要があるので、XcodeとXcode CommandLine Toolsをインストールします。

Xcodeコマンドラインツールは、Xcodeインストール後以下のコマンドでインストールできます。

xcode-select --install

scipyのインストールにはgfortranが必要なので、こちらも導入しておきます。

GFortranBinariesMacOS

これで環境は整ったはず・・・なので、動作を確認します。適当なフォルダを作成し、そこに機械学習用の仮想環境を作成してみます。
こちらのGistにあるrequirements.txtを使用します。

mkdir ml_env_test
cd ml_env_test

# 仮想環境を作成
virtualenv venv

# 仮想環境を有効化
source venv/bin/activate

# GitHubのRAWからrequirements.txtを取得(普通にコピーしてテキストファイルを作ってもよい)
curl https://gist.githubusercontent.com/icoxfog417/420ac8eb3fad524ee2d6/raw/ac4122eb7b53b40274d2e7ced224abaa28a383c7/requirements.txt > requirements.txt

# 依存ライブラリをインストール
pip install -r requirements.txt

scipyのインストールはかなり遅くまたメモリも食うため、Chromeとか動かしながらやっているとMemoryErrorを食らいます。コンパイルが通ることを祈り、静かに待ちましょう。

pip installが完了すれば、動作確認は完了です。

Linux(Ubuntu)

以下をapt-getすれば大丈夫・・・だと思います(Ubuntu 14.04)。

build-essential
gfortran
libgfortran3
python-dev(python3-dev)
libblas-dev
libatlas-base-dev
cython

仮想環境の構築コマンドはMacと同様のため、上記を参照してください。

Windows

Windowsでコンパイルを通すのは至難の業なので、こちらからコンパイル済みバイナリをダウンロードしてきてインストールします。

Unofficial Windows Binaries for Python Extension Packages

こちらで取得できる.whlファイルを使って、pip install <file_path>でインストールしていきます。必要なライブラリはこちらのrequirements.txtの通りです。

mkdir ml_env_test
cd ml_env_test

# 仮想環境を作成
virtualenv venv

# 仮想環境を有効化
venv\Scripts\activate

# (上記サイトから.whlファイルを落としてくる)

# .whlファイルをインストールしていく(以下はnumpyの例)
pip install numpy‑1.9.2+mkl‑cp34‑none‑win32.whl

あくまで自力でコンパイルする場合はVisual Studio、MinGW/Cygwinなどの導入が必要になるのでだいぶいばらの道です。よほどのことがない限りやめておいた方がいいと思います。

詳細はこちらをご参考ください。

自動構築技術を利用

koudaiiiさんがDocker、shiracoさんがAnsibleを用意してくれたので、これで入れられます。

koudaiii/ml-handson
shiraco/ansible_ipython_machineleaning_bootstrap_conda

動作確認

仮想環境の有効化(virtualenvの場合はプラスpip install)に成功したら、試しにjupyter notebookを起動してみます。scikit-learnの解説をしたリポジトリを用意しているので、それが見られるか確認してください。

git clone https://github.com/icoxfog417/scikit-learn-notebook.git
cd scikit-learn-notebook
jupyter notebook

その他参考資料