在树莓派上进行机器学习系列之 - 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的网页中,点击:
Settings
→ Language→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 库