在 Raspberry Pi 上安裝 scikit-learn 機器學習套件
非常方便,且功能完備的機器學習套件!
使用 arm64
架構的映像檔
因為套件支援的關係,我們必須使用 64 位元的 ARM 映像檔。因為目前官方尚未提供 arm64
的作業系統,為了方便,我們將使用 Ubuntu 官方釋出的專用映像檔(僅適用於 3B 或 3B+)
小獅建議使用 Etcher.io 寫入映像檔,因為它會檢查寫入的時候有沒有出錯,而且跨平台(Linux / MacOS / Windows)
下載 : https://www.balena.io/etcher/
檢查 SWAP
因為等一下編譯會用到很多記憶體,請務必確認你有 1GB 以上的 SWAP 空間
1 2 3 4 5 |
free -h total used free shared buff/cache available Mem: 912M 87M 299M 52K 525M 809M Swap: 1.0G 45M 978M |
如果沒有的話,請參考這篇文章
安裝 scikit-learn
首先安裝 Python 3.7(或者 3.6 也可以)和 virtualenv
1 2 |
sudo apt install python3.7-dev python3.7-venv virtualenv |
安裝一些編譯時必要的工具
1 2 3 |
sudo apt install build-essential sudo apt install gfortran libopenblas-dev liblapack-dev |
建立 venv
1 2 |
python3.7 -m venv ~/py3 |
切換到 venv
1 2 3 4 |
$ source ~/py3/bin/activate (py3) $ python --version Python 3.7.1 |
更新一下 Python 的工具
1 2 3 4 |
pip install pip --upgrade pip install setuptools --upgrade pip install wheel --upgrade |
安裝相依套件(不要鐵齒,一定要先裝)這個步驟大概需要花 1 個小時,請耐心等候!
1 2 3 4 |
pip install Cython --upgrade pip install numpy --upgrade pip install scipy --upgrade |
終於要開始安裝了!這個步驟也請耐心等候!
1 2 |
pip install scikit-learn |
測試 scikit-learn
試一下能不能用(參考:Ex 1: Recognizing hand-written digits – machine-learning)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
from sklearn import datasets, svm, metrics digits = datasets.load_digits() images_and_labels = list(zip(digits.images, digits.target)) n_samples = len(digits.images) data = digits.images.reshape((n_samples, -1)) classifier = svm.SVC(gamma=0.001) classifier.fit(data[:n_samples // 2], digits.target[:n_samples // 2]) expected = digits.target[n_samples // 2:] predicted = classifier.predict(data[n_samples // 2:]) print('Confusion matrix:\n{}'.format(metrics.confusion_matrix(expected, predicted))) |
輸出大概長這樣:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Confusion matrix: [[87 0 0 0 1 0 0 0 0 0] [ 0 88 1 0 0 0 0 0 1 1] [ 0 0 85 1 0 0 0 0 0 0] [ 0 0 0 79 0 3 0 4 5 0] [ 0 0 0 0 88 0 0 0 0 4] [ 0 0 0 0 0 88 1 0 0 2] [ 0 1 0 0 0 0 90 0 0 0] [ 0 0 0 0 0 1 0 88 0 0] [ 0 0 0 0 0 0 0 0 88 0] [ 0 0 0 1 0 1 0 0 0 90]] |