Debian 7 wheezy に scikit-learn をインストールする (virtualenv 対応)

Debian 7 wheezy に Python 用の機械学習ライブラリ scikit-learn をインストールする手順をまとめます. scikit-learn は numpy や scipy に依存するため, インストール手順が少し複雑になります.

テスト環境

  • Debian 7.6 wheezy
  • numpy 1.8.1
  • scipy 0.14.0
  • scikit-learn 0.15.0

事前準備

Python や GCC, Fortran などの scikit-learn をインストールするために必要なライブラリを apt でインストールします.
virtualenv については apt でインストールしたものでも, pip 等でインストールしたものでも構いません.
numpy, scipy, scikit-learn については最新のものを利用するために, pip でインストールします.

sudo aptitude update
# Python
sudo aptitude install python-dev python-virtualenv
# GCC etc...
sudo aptitude install build-essential
# Fortran
sudo aptitude install gfortran libatlas-dev libatlas3gf-base liblapack-dev
sudo update-alternatives --set libblas.so.3 /usr/lib/atlas-base/atlas/libblas.so.3
sudo update-alternatives --set liblapack.so.3 /usr/lib/atlas-base/atlas/liblapack.so.3

インストール

virtualenv で仮想環境を作成し, そこに numpy, scipy, scikit-learn の順でインストールしていきます.

virtualenv venv
source venv/bin/activate
pip install numpy scipy scikit-learn

テスト

scikit-learn の Tutorial のコードを実行してみます.
SVM を使ったサンプルデータセットの数字の識別です.

 
$ python
Python 2.7.3 (default, Mar 13 2014, 11:03:55)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from sklearn import datasets, svm
>>> digits = datasets.load_digits()
>>> clf = svm.SVC(gamma=0.001, C=100.)
>>> clf.fit(digits.data[:-1], digits.target[:-1])
SVC(C=100.0, cache_size=200, class_weight=None, coef0=0.0, degree=3,
  gamma=0.001, kernel='rbf', max_iter=-1, probability=False,
  random_state=None, shrinking=True, tol=0.001, verbose=False)
>>> clf.predict(digits.data[-1])
array([8])

参考