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、かなり便利そうですね。