树莓派 - 02. 机器学习环境搭建

在树莓派上进行机器学习系列之 - 02. 机器学习环境搭建

安装 jupyterlab

JupyterLab 是 Jupyter 主打的最新数据科学生产工具,某种意义上,它的出现是为了取代 Jupyter Notebook。不过不用担心 Jupyter Notebook 会消失,JupyterLab 包含了 Jupyter Notebook 所有功能。

JupyterLab 作为一种基于 web 的集成开发环境,你可以使用它编写 notebook、操作终端、编辑 markdown 文本、打开交互模式、查看 csv 文件及图片等功能。

确认环境

先创建并进入 ~/ailab 目录,并激活 虚拟环境,并确认虚拟环境的 python 和 pip 版本号

cd ~/ailab
python -V # 我选择使用的是 3.7.11
pip -V    # 查看 pip 对应的 python 版本是否与 python 一致
pip install -U pip # 升级 pip 版本号,并确认是否已经使用了国内加速源配置
如果返回的结果不是 `3.7.11` 并且当前目录不是虚拟环境 `notebook` 的目录,可参考上一篇中的相关设置进行配置处理。

提示 : 后面操作均将 ~/ailab 作为 pyenv 虚拟环境的主目录,规划在 ~/ailab/notebooks 作为 jupyter notebook 的文件存储目录。

接下来安装 jupyterlab 包

安装 jupyterlab

pip install jupyterlab

生成 jupyter 的配置文件

jupyter notebook --generate-config
# 输出
~/.jupyter/jupyter_notebook_config.py

生成登录密码

# python -c 'from notebook.auth import passwd; print(passwd("你自己使用的密码"));'
python -c 'from notebook.auth import passwd; print(passwd("123456"));'
# 输出
argon2:$argon2id$v=19$m=10240,t=10,p=8$gTePk10HjmeXMX14HODuLw$zrkmbGjZnVQEmS1u3KvjS3Vg3IYBwnmiqUu2ym5AiP4

修改 jupyterlab 的配置文件

vim ~/.jupyter/jupyter_notebook_config.py

调整以下参数

# 设定ip访问,允许任意ip访问
c.NotebookApp.ip = '0.0.0.0' # 或设置为 '*' 亦可
# 不打开浏览器
c.NotebookApp.open_browser = False
# 用于访问的端口,设定一个不用的端口即可
c.NotebookApp.port = 8888
# 设置登录密码(上一步生成的密码复制过来)
c.NotebookApp.password = 'argon2:$argon2id$v=19$m=10240,t=10,p=8$gTePk10HjmeXMX14HODuLw$zrkmbGjZnVQEmS1u3KvjS3Vg3IYBwnmiqUu2ym5AiP4'
c.NotebookApp.enable_mathjax = True # 启用 MathJax
c.NotebookApp.allow_remote_access = True #允许远程访问
# 设置jupyter的工作路径
c.NotebookApp.notebook_dir = '/home/你的用户名/ailab/notebooks'

启动 jupyterlab

通过 shell 操作

# 前台启动,可用于临时调试使用
jupyter lab --allow-root
# 或
# 后台运行 
nohup jupyter lab --allow-root > nohup.out 2>&1 &

创建为 systemd 服务,自动启动

创建一个 service 描述文件 /home/robert/ailab/jupyterlab.service

[Unit]
Description=Jupyterlab
After=syslog.target network.target

[Service]
User=robert
Environment="PATH=/home/robert/.pyenv/bin:/home/robert/.pyenv/shims:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
WorkingDirectory=/home/robert/ailab/
ExecStart=/home/robert/.pyenv/versions/notebook/bin/jupyter lab --allow-root

[Install]
WantedBy=multi-user.target

添加到 systemctl 服务列表中

sudo ln -s /home/robert/ailab/jupyterlab.service /etc/systemd/system/jupyterlab.service

更新 systemctl 服务配置

sudo systemctl daemon-reload

启动服务

sudo systemctl start jupyterlab

查看状态

sudo systemctl status jupyterlab

设置 jupyter lab 自启动

sudo systemctl enable jupyterlab

访问 jupyterlab

通过电脑浏览器,树莓派指定的静态和 jupyter 配置中设置的端口 8888 即 192.168.1.81:8888,访问 jupyter lab 的 IDE,密码即为上面操作中生成密码使用的 123456

配置 jupyterlab 的中文界面

安装中文语言包

pip install jupyterlab-language-pack-zh-CN

然后在Jupyter Lab的网页中,点击:

SettingsLanguage→Chinese (simplified, china) (中文 (简体,中国))

使用插件

插件扩展功能需要 nodejs 支持

安装 nodejs

国内源下载并安装,这里选择 linux arm 64 位的版本

wget https://registry.npmmirror.com/-/binary/node/v16.19.1/node-v16.19.1-linux-arm64.tar.xz

解压缩

sudo tar -xf node-v16.19.1-linux-arm64.tar.xz -C /opt
sudo mv /opt/node-v16.19.1-linux-arm64 /opt/nodejs
# 或使用 ohmyzsh 中的 extract 插件提供的 x 功能
x node-v16.19.1-linux-arm64.tar.xz
sudo mv node-v16.19.1-linux-arm64 /opt/nodejs

配置环境变量

bash 环境 vim ~/.bashrc

export PATH=/opt/nodejs/bin:$PATH

zsh 环境 vim ~/.zshrc

export PATH=/opt/nodejs/bin:$PATH

安装 pip 的 nodejs 支持

pip install nodejs

安装插件

# pip
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
pip install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user

更多插件扩展,可自行搜索,按说明安装

针对 jupyter lab 内的终端进行美化

设置 > 高级设置编辑器 搜索 终端 设置

Font family(字体) : 设置为 DroidSansMono Nerd Font
Font size(字体大小) : 设置为 14
主题 : 设置为 dark

jupyter lab 总结

树莓派用户主目录下

~/ailab 为 jupyterlab 的主目录
~/ailab/notebooks 为 jupyter 的 notebook 文件目录

我使用的是 systemctl 管理服务,即树莓派启动后,会自动启用服务,并监听 8888 端口。

安装常用的科学计算库

以下包需要进入到 ~/ailab/ 目录激活虚拟环境后,进行安装操作,以方便在 jupyterlab 中使用。

Numpy

numpy 是 python 的一个开源数值计算扩展,用来存储和处理大型矩阵,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

pip install numpy --ignore-installed numpy

--ignore-installed 无视之前可能已经安装过的版本,安装最新版

pip list | grep numpy
# 输出
numpy                             1.21.6

Scipy

scipy 用来处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题,常用于有效计算 Numpy 矩阵,使 Numpy 和 Scipy 协同工作,高效解决问题。

pip install scipy --ignore-installed scipy

验证

pip list | grep scipy
# 输出
scipy                             1.7.3

Pandas

pandas 是 python 的一个数据分析包,纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。

pip install pandas --ignore-installed pandas

验证

pip list | grep pandas
# 输出
pandas                            1.3.5

scikit-learn

Sklearn 包含了很多种机器学习的方式:

  • Classification 分类
  • Regression 回归
  • Clustering 非监督分类
  • Dimensionality reduction 数据降维
  • Model Selection 模型选择
  • Preprocessing 数据预处理
pip install scikit-learn --ignore-installed scikit-learn

验证

pip list | grep scikit-learn
# 输出
scikit-learn                      1.0.2

matplotlib

Matplotlib 是一个 Python 的 2D 绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。通过 Matplotlib,可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。

pip install matplotlib --ignore-installed matplotlib

验证

pip list | grep matplotlib
# 输出
matplotlib                        3.5.3

Pillow

Pillow 是 Python3 最常用的图像处理库。
注意:Pil 库与 Pillow 不能同时存在与一个环境中,如果你已经安装 Pil 库,那么请将他卸载。Python2 使用Pil库,两者是使用方法差不多,区别在于类的引用不同。

pip install pillow --ignore-installed pillow

验证

# 注意这里的大写 P
pip list | grep Pillow
# 输出
Pillow                            9.5.0
# 后来又重新安装了 6.2.2
Pillow                            9.5.0

使用时需注意

# Pillow 的包名是 PIL 不是 Pillow
import PIL
print(PIL.__version__)

参考

神器 | JupyterLab,极其强大的下一代notebook!
pip3 安装JupyterLab
Jupyter Lab 3安装和使用(中文界面)
conda使用教程&Jupyterlab/notebook教程
15个好用到爆炸的Jupyter Lab插件
保姆级教程,4 步完成 JupyterLab 插件安装(附多款高生产力插件推荐)
Jupyter Lab 使用 conda 虚拟环境
Python 图像处理 Pillow 库 基础篇
python——absl 库

赞赏