old school magic

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

Python3でPyMCのインストール

概要

PyMCはPythonベイズ統計用ライブラリです。特にMCMCに重点を置いています。
Python3にPyMCを導入するのに割りと手こずったのでメモします。
参考になれば幸いです。

インストールの前準備

今回はPyMC version 3を試します。(まだalpha版です。)
Python 2.7もしくは3.3に対応しています。

PyMC3
https://github.com/pymc-devs/pymc

依存しているライブラリは

  • Theano
  • NumPy
  • SciPy
  • Matplotlib

です。これらを事前にインストールします。

参考
MacでPythonの機械学習環境構築(2014年5月版) - old school magic

Theano

Anaconda(Python用の機械学習パッケージ)で一発です。
と言いたいところですが、Theanoでちょっと引っかかりました。

TheanoはDeep Learning用のPyhtonライブラリです。

Theano
http://deeplearning.net/software/theano/

PyMCでは計算時にTheanoの機能を一部使っているようです。

私の環境だと、theanoをimportしようとするとこんな感じのエラーがでました。
(エラーが出ない方はこの項を飛ばしてください。)

In [1]: import theano

The environment variable 'DYLD_FALLBACK_LIBRARY_PATH' does not contain the ... (Pythonのパス)
This will make Theano unable to compile c code. 
Update 'DYLD_FALLBACK_LIBRARY_PATH' to contain the said value, this will fix this error.

'DYLD_FALLBACK_LIBRARY_PATH'という環境変数を設定しろ、というエラーなのですが、設定してもうまく行かず困ってしまいました。
幸い同じようなエラーに遭遇した方がいらっしゃいました。

psycopg2, pymc, theano and DYLD_FALLBACK_LIBRARY_PATH - Stack Overflow
http://stackoverflow.com/questions/21713148/psycopg2-pymc-theano-and-dyld-fallback-library-path

TheanoのDevelopment版だとこの環境変数は必要ないとのことで、Development版を導入します。

# Development版をgitからインストール
pip install --upgrade --no-deps git+git://github.com/Theano/Theano.git

# 上のコマンドがダメならこちらのコマンドで
pip install --upgrade --no-deps git+git://github.com/Theano/Theano.git --install-option='--prefix=~/.local'

これでTheanoはOKです。

PyMCのインストールとテスト

PyMCをインストールします。

# gitからインストール
# 普通に pip install pymc してしまうとPyMC 2.3がインストールされてしまいますのでご注意を
pip install git+https://github.com/pymc-devs/pymc

PyMCのチュートリアルを試してみます。
PyMC 3 Tutorial
http://nbviewer.ipython.org/github/pymc-devs/pymc/blob/master/pymc/examples/tutorial.ipynb
同じ内容のスクリプトファイルはこちら
https://github.com/pymc-devs/pymc/blob/master/pymc/examples/tutorial.py

スクリプトの最後で図示しようとしているのですが、ここでもちょっとこけました。
(ここも環境によると思うので、エラーが出ないからは無視してください。)

In [10]: pm.traceplot(trace);

UserWarning: tight_layout : falling back to Agg renderer
  warnings.warn("tight_layout : falling back to Agg renderer")

Matplotlibのエラーみたいです。とりあえず図示結果を直接表示せず、画像に保存することで対処しました。

# こっちに書き換える
In [11]: pm.traceplot(trace).savefig("result.jpg")

これで一応動作確認終了です。

感想

前回から引き続き、この本の勉強の一環でインストールしました。

次は実際に動かしてみようと思います。
Theanoいじってみたいです。
iPython Notebook、かなり便利そうですね。