以前としてunit testには失敗するけど、ipythonからmlpyをインポートして使うことが出来るようになったのでそこまでをまとめておく。
必要なもの
mlpyのインストール説明によると、以下のものが必要。
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()
結果、チュートリアルと同じ図を表示できているので、正しく動作しているようです。