old school magic

機械学習に関する備忘録です。

MacでPythonの機械学習環境構築(2014年5月版)

この記事は古くなっています。
最新版の記事はこちらになります。


MacでPythonの機械学習環境構築(2015年2月版) - old school magic

概要

MacPythonの管理と環境構築の備忘録です。
色々試してみて今の形に落ち着いたのですが、コロコロ変わりそうな気もするので日付をつけときます。
簡単にまとめるとこんな感じです。

前回はこんな感じだったのでだいぶ変わりました。

前準備

バージョン管理システムはhomebrewを用います。
ソフトウェアをまとめて管理(インストールやアップデート、削除等)するためのソフトです。
homebrewについては次の解説が参考になります。

  • 公式

Homebrew — The missing package manager for OS X

  • インストール、使い方

MacOSX - パッケージ管理システム Homebrew - Qiita

# homebrewのインストール
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

Pythonの導入・管理

pyenvを用います。
yyuu/pyenv · GitHub
Pythonをバージョンごとに個別に管理するためのソフトです。
Pythonに関して言えば、一つのPythonをアップデートして使うより、バージョンごとにPythonの環境を構築したほうが良いと思います。*1

# pyenv のインストール
brew install pyenv

pyenvを使う前に環境変数を設定してあげる必要があります。
.bash_profileに次のコマンドを書き足します。

# 環境変数の設定
export PATH="$HOME/.pyenv/shims:$PATH"

pyenvは様々なバージョンのPython(やサードパーティ)に対応しています。
次のコマンドでインストールできるPythonの種類を確認できます。

# pyenvでインストールできるPythonの確認
pyenv install -l

例えば、(2014年5月時点で)最新版のPython 3.4.0は、

pyenv install 3.4.0

でインストールできます。
デフォルトではユーザディレクトリの.pyenv以下にインストールされます。

機械学習ライブラリの構築

機械学習ライブラリとして、Anacondaを使います。
Anaconda Scientific Python Distribution

Python機械学習ライブラリだと、

  • numpy
  • scipy
  • matplotlib
  • scikit-learn

あたりが定番なのですが、Anacondaはここらへんをひとまとめにしてインストールしてくれます。個別にインストールするよりすごい楽です。iPythonとか便利ツールもインストールしてくれます。

Anacondaはpyenvでインストールできます。

# Anacondaのインストール
# 数百Mあるので結構時間かかります。10分くらい?
# バージョンは適宜最新版に書き換えてください
pyenv install anaconda-1.9.1

インストールしたらおまじない(再ハッシュ)しましょう。

pyenv rehash

pyenvでは使用するバージョンのPythonを選択できます。
先程インストールしたAnacondaに設定する場合は、

# 使用するPythonの選択
pyenv local anaconda-1.9.1
pyenv global anaconda-1.9.1

といった感じです。
ローカル環境とグローバル環境で使い分けられます。が、とりあえずは両方同じPythonに設定しておきます。

その他、pyenvでよく使うコマンドは

# 現在使ってるPythonの確認
pyenv version
# インストールされてるPythonの確認
pyenv versions
# Pythonのアンインストール
pyenv uninstall

あたりです。詳しくはここに。
pyenv/COMMANDS.md at master · yyuu/pyenv · GitHub

AnacondaでインストールされるPythonは2系です。
3系を使いたい場合はここから一手間入ります。

# Anaconda自体のアップデート
conda update conda
# Python3なAnacondaのインストール
conda create -n py33 python=3.3 anaconda
# 現在のターミナルをPython3+Anacondaに設定
source ~/anaconda/bin/activate py33

py33というのは環境名というもので、好きな名前を付けても大丈夫です。

なお、このままだとAnaconda+Python3を使用したい時、毎回

source ~/anaconda/bin/activate py33

とコマンドを打たなければいけません。

解決策ですが、私はiPythonを使う派なので、こんな感じでエイリアスしました。*2

# ipython3 で Python3+Anaconda+iPythonを起動できるように設定
# .bash_profileに書き加えてあげてください
alias ipython3="source ~/.pyenv/versions/anaconda-1.9.1/bin/activate py33; ipython"

参考
Python 3 support in Anaconda
AnacondaでPython3.3 - Qiita

これでPython3+機械学習環境が整いました。

余談

開発環境はSublime Text 3 + iPython (+ iTerm2)を使用してます。

*1:Pythonをアップデートするとpipでインストールしたソフトがまるまる死んで面倒なので。

*2:直接パスを通すという手もありますが、それだとpyenvで切り替えられなくなるので...