Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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

その他参考資料

icoxfog417
All my statements are from fun fancies, not a boring story that represents a company that I belonging to.
https://github.com/icoxfog417
tis
創業40年超のSIerです。
https://www.tis.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした