在 Raspberry Pi 上安裝 scikit-learn 機器學習套件
非常方便,且功能完備的機器學習套件!
使用 arm64 架構的映像檔
因為套件支援的關係,我們必須使用 64 位元的 ARM 映像檔。因為目前官方尚未提供 arm64 的作業系統,為了方便,我們將使用 Ubuntu 官方釋出的專用映像檔(僅適用於 3B 或 3B+)

小獅建議使用 Etcher.io 寫入映像檔,因為它會檢查寫入的時候有沒有出錯,而且跨平台(Linux / MacOS / Windows)
下載 : https://www.balena.io/etcher/

檢查 SWAP
因為等一下編譯會用到很多記憶體,請務必確認你有 1GB 以上的 SWAP 空間
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
sudo apt install python3.7-dev python3.7-venv virtualenv
安裝一些編譯時必要的工具
sudo apt install build-essential
sudo apt install gfortran libopenblas-dev liblapack-dev
建立 venv
python3.7 -m venv ~/py3
切換到 venv
$ source ~/py3/bin/activate
(py3) $ python --version
Python 3.7.1
更新一下 Python 的工具
pip install pip --upgrade
pip install setuptools --upgrade
pip install wheel --upgrade
安裝相依套件(不要鐵齒,一定要先裝)這個步驟大概需要花 1 個小時,請耐心等候!
pip install Cython --upgrade
pip install numpy --upgrade
pip install scipy --upgrade
終於要開始安裝了!這個步驟也請耐心等候!
pip install scikit-learn
測試 scikit-learn
試一下能不能用(參考:Ex 1: Recognizing hand-written digits – machine-learning)
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)))
輸出大概長這樣:
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]]
![[Linux] 如何解決 Ubuntu 中無法使用 Elantech 觸控板的問題](;https://img.alexleo.click/laptop-keyboard-touchpad.jpg) 
																			![[Linux] 如何使用 LUKS 建立加密的磁碟映像檔](https://img.alexleo.click/Team-BoB_luks_disk_image/pixy.org_97715-small.jpg) 
																			 
																			 
																											 
																											![[筆記] Matplotlib 使用上的一些建議](https://img.alexleo.click/Team-BoB_matplotlib_notes/title.jpg) 
																											![[Git 筆記] merge、squash、rebase 三種方式的比較](https://img.alexleo.click/Team-BoB_git_merge_squash_rebase/cover.jpg) 
																											![[JavaScript] 手把手一起入門(二) – 變數 & 基本操作](;https://img.alexleo.click/teambob/WHATWG_JavaScript_logo.png) 
																											![[Linux] 如何安裝 Eclipse 在 Ubuntu 14.04](;https://img.alexleo.click/teambob/eclipse.png) 
																											![[Linux] 如何在 Ubuntu 14.04 中安裝 Oracle/Open JDK](;https://img.alexleo.click/teambob/java-coffee.png) 
																											![[C/C++] Linklist 的架構與使用](;https://img.alexleo.click/teambob/2405613966_c68110ca76_o.jpg)