Dec 13, 2018

Raspberry Pi 2にscikit-learn 0.20をインストール

aptでpython-sklearnをインストールして、pythonで

from sklearn.neural_network import MLPClassifier

すると、見つからないというエラーになった。
Raspbian 8.0 (jessie)の現在最新のaptのpython-sklearnのバージョンは0.14.1-3だが、sklearn.neural_network.MLPClassifierはscikit-learn 0.18以降にしか無いようだ。

そこで、pipで新しいバージョンのscikit-learnをインストールしようとして、

sudo pip install --upgrade pip

するとpip3が壊れたりしたので、
sudo pip uninstall pip
sudo apt install --reinstall python-pip python3-pip

として修復し、virtualenvを使うことにした。

aptでpython-virtualenvをインストールして、

virtualenv (workdir)
cd (workdir)
. bin/activate
pip install --upgrade pip
pip install scikit-learn

とすると、scipyのmake中にblasやlapackが無いというエラーになった。
https://scikit-learn.org/stable/developers/advanced_installation.html
によると、scikit-learnのインストールにはlibatlas-devとlibatlas3-baseが必要とのことだが、scipyのmakeには他に、liblapack-devか、もしくはatlasに合わせるならlibatlas-base-devが必要のようだ(どちらでも成功した)。

aptでlibatlas-dev, libatlas3-base, libatlas-base-devをインストールして、改めて

pip install scikit-learn

すると、数十分後にRaspberry Pi 2からの応答が無くなった。scipyのmake中にメモリのスワップ領域が枯渇するようだった。

スワップ領域を1GB追加しても不足したので、2GB追加した。

su -
dd if=/dev/zero of=/swapfile bs=1024 count=2097152
chmod 0600 /swapfile
mkswap /swapfile
swapon /swapfile

これによって、数時間かかるが、scikit-learnのインストールができるようだ。

ただ、時間がかかるし、makeが失敗して時間を取られるリスクがあるので、やっぱりaptでインストールできるものはaptでインストールすることにした。MLPClassifierと合わせてmatplotlibを使いたいが、もはやpipでmatplotlibをインストールする気にはならない。
現時点で手っ取り早くscikit-learn 0.20.xをインストールするには、以下のようにすれば良いと思う。

sudo apt install python-numpy python-scipy python-virtualenv libatlas-dev libatlas3-base libatlas-base-dev
virtualenv --system-site-packages (dir)
cd (dir)
. bin/activate
pip install --upgrade pip
pip install scikit-learn

※(dir)は任意のディレクトリ名

See more ...

Posted at 23:29 in PC一般 | WriteBacks (0)
WriteBacks