stMind

about Tech, Computer vision and Machine learning

OSX Lionにmlpyをインストール

以前としてunit testには失敗するけど、ipythonからmlpyをインポートして使うことが出来るようになったのでそこまでをまとめておく。

必要なもの

mlpyのインストール説明によると、以下のものが必要。

  • GCC
  • Python >= 2.6 or 3.X
  • NumPy >= 1.3.0 (with header files)
  • SciPy >= 0.7.0
  • GSL >= 1.11 (with header files)

GCC

自分の環境は、Mac OSX 10.7.3、XCode4.1で、この環境の/usr/bin/gcc

i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

LLVM buildで、scipyのページによると少々問題があるらしく、LLVM buildではないGCCをインストールしておく。

$ sudo brew install apple-gcc42
$ sudo mv /usr/bin/gcc /usr/bin/gcc.org
$ sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 /usr/bin/gcc
$ gcc --version
i686-apple-darwin11-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

オリジナルの/usr/bin/gccはリネームして、インストールしたapple-gcc42にシンボリックリンクを張っておく。

Python

これもscipyのページに記載があるんですが、appleが同梱しているpythonではなく、公式のディストリビューションをインストールすることを強くすすめるということなので、pkgをダウンロードしてインストールしておきます。
Download PythonのPython 2.7.3 Mac OS X 64-bit/32-bit x86-64/i386 Installer (for Mac OS X 10.6 and 10.7 [2])をインストールします。

$ /Library/Frameworks/Python.framework/Versions/2.7/bin/python --version
Python 2.7.3

GSL

Index of /pub/GNU/gslからgsl-1.15.tar.gzをダウンロード、インストール。

$ tar zxvf gsl-1.15.tar.gz
$ cd gsl-1.15.tar.gz
$ ./configure
$ make
$ sudo make install

NumPy, SciPy

個別にインストールしてもいいですが、ipythonやmatplotlibなども含めたパッケージが配布されている(有難い)のでそちらを使います。また、ここからは独立した環境にしておけば、やり直したりするのも簡単に出来るのでvirtualenvで環境を作ってその中で実行していきます(名前は、Machine Learningに使うのでML)。

$ mkvirtualenv -p /Library/Frameworks/Python.framework/Versions/2.7/bin/python ML
$ mkdir work
$ cd work
$ git clone git://github.com/fonnesbeck/ScipySuperpack.git
$ cd ScipySuperpack
$ sh install_superpack.sh
$ ipython
In [1]: import numpy
In [2]: numpy.__version__
Out[2]: '1.7.0.dev-0c5f480'
In [3]: import scipy
In [4]: scipy.__version__
Out[4]: '0.11.0.dev-c1ea274'

mlpy

ようやく目当てのmlpyをインストール。ソースはmlpy - Browse Files at SourceForge.netからmlpy-3.5.0をダウンロード。

$ tar zxvf mlpy-3.5.0.tar.gz
$ cd mlpy-3.5.0
$ python setup.py build_ext --include-dirs=/usr/local/include --rpath=/usr/local/lib
$ python setup.py install

確認してみると、ImportError出たりするので、sys.pathにMLの下にインストールされたmlpyのパスを指定しておく。

$ impor sys
$ sys.path.append('/Users/satojkovic/.virtualenvs/ML/lib/python2.7/site-packages')
$ import numpy
$ import mlpy

それでもImportErrorが出ることもあるので、そのときはパスを地道に設定してかないとできなさそう…

mlpyの実行

Tutorial 1に従ってやってみる。

$ curl -LO http://www-ist.massey.ac.nz/smarsland/Code/3/sinewave.py
$ ipython
In [1]: import numpy as np
In [2]: import mlpy
In [3]: import matplotlib.pyplot as plt
In [4]: iris = np.loadtxt('iris.csv', delimiter=',')
In [5]: x, y = iris[:,:4], iris[:,4].astype(np.int)
In [6]: x.shape
Out[6]: (150, 4)
In [7]: y.shape
Out[7]: (150,)
In [8]: pca = mlpy.PCA()
In [9]: pca.learn(x)
In [10]: z = pca.transform(x,k=2)
In [11]: z.shape
Out[11]: (150, 2)
In [12]: fig1 = plt.figure(1)
In [13]: title = plt.title("pca on iris")
In [14]: plot = plt.scatter(z[:,0],z[:,1], c=y)
In [15]: labx = plt.xlabel("first")
In [16]: laby = plt.ylabel("second")
In [17]: plt.show()

結果、チュートリアルと同じ図を表示できているので、正しく動作しているようです。

f:id:satojkovic:20120419032228p:image