Jupyter Lab:Jupyter Notebook 的演变
JupyterLab 是 Jupyter Notebook 的下一代用户界面。它是一个基于Web的交互式开发环境,可以让用户以可视化的方式编辑、运行和分享代码。JupyterLab支持多种语言,包括Python、R、Julia等,可以进行数据分析、科学计算、机器学习等各种任务。
与Jupyter Notebook相比,JupyterLab提供了更丰富的功能和更灵活的界面。它支持多窗口布局,可以在同一个页面内同时打开多个Notebook、文本文件、终端等。同时,JupyterLab还支持插件扩展,可以根据需要安装和配置各种插件,如代码编辑器、文件浏览器、绘图工具等,以满足不同的需求。
随着 AI 行业的持续火热,相关的工具和框架简直是一天一个样,JupyterLab 也可以作为 AI 的工具,可以做很多的事情,包括:
- 数据探索和可视化:JupyterLab 可以通过各种Python库,如Numpy、Pandas、Matplotlib、Seaborn等,对数据进行探索和可视化,帮助用户发现数据的特点和规律。
- 机器学习和深度学习:JupyterLab可以通过各种Python库,如Scikit-learn、TensorFlow、Keras、PyTorch等,进行机器学习和深度学习的任务,如分类、回归、聚类、图像识别、自然语言处理等。
- 自然语言处理:JupyterLab可以通过Python库NLTK、Spacy等,进行自然语言处理的任务,如分词、命名实体识别、文本分类、情感分析等。
- 数据挖掘和数据预测:JupyterLab可以通过各种Python库,如Scikit-learn、XGBoost等,进行数据挖掘和数据预测的任务,如异常检测、关联规则挖掘、时间序列分析等。
- 模型解释和调优:JupyterLab可以通过各种Python库,如Shap、Lime、Scikit-learn等,对机器学习和深度学习模型进行解释和调优,帮助用户理解模型的决策过程和优化性能。
安装启动
JupyterLab 可以使用 conda、mamba、pip、pipenv 或 docker 安装。
#conda
conda install -c conda-forge jupyterlab
#mamba
mamba install -c conda-forge jupyterlab
#pip
pip install jupyterlab
#pipenv
pipenv install jupyterlab
pipenv shell
请查看官方安装文档以获取更多细节。这里将介绍一下使用 Docker 安装和使用 JupyterLab,同样官方提供了详细的文档。
Jupyter Docker Stacks 是一组可直接运行的 Docker 镜像,包含 Jupyter 应用程序和交互式计算工具。可以使用堆栈镜像执行以下任何操作(等等):
- 启动带有 JupyterLab 前端的个人 Jupyter 服务器(默认)
- 使用 JupyterHub 为团队运行 JupyterLab
- 在本地 Docker 容器中启动个人 Jupyter Notebook 服务器
- 编写自己的项目 Dockerfile
可以在 mybinder.org 上尝试一个最新版本的 jupyter/base-notebook
镜像构建的。这里就从 Docker 镜像启动一个 Jupyter 服务器:
docker run -p 10000:8888 jupyter/scipy-notebook:2023-04-24
上面的命令是从 Docker Hub 拉取 jupyter/scipy-notebook 镜像,标记为 2023-04-24
的版本,如果该镜像还未在本地主机上存在。那么它会启动一个容器,运行 Jupyter 服务器,并将容器的内部端口 8888
映射到主机机器的端口 10000
。可以通过修改 -p
选项的值来更改容器端口的映射,例如将其改为 -p 8888:8888
,关于 Docker 的操作可以阅读专题《面向WEB开发人员的Docker》。
运行成功后将可以看到一下界面:
在上面的界面可以看到访问地址:http://127.0.0.1:8888/lab?token=65eed917357fa0bd59960c109864074c6d14515f32d5bb56
,由于运行的时候改了本机对应的端口为 10000
,因此正确的访问地址为:http://127.0.0.1:10000/lab?token=65eed917357fa0bd59960c109864074c6d14515f32d5bb56
。
这意味着一切都已准备就绪,可以开始使用了。
操作界面
在使用各种功能之前了解一下 JupyterLab 的界面。
- 顶部菜单:展示了在 Jupyter Lab 中可用的各种操作。
- 左侧边栏:包括常用的选项卡。可以从
Running
面板中查看正在运行的会话,Commands
面板允许搜索所有可用的命令。 - 主要工作区:这是实际工作所需的区域。它包括notebooks、文档、控制台、终端等。只需双击或拖动文件到该区域即可开始工作。工作区可以通过命名的工作区 URL 在服务器上保存。还可以通过在 JupyterLab 的 URL 中将 lab 改为 tree 来在经典的 Notebook 视图和 JupyterLab 视图之间切换。
来快速了解如何在 Jupyter Lab 中处理文件。
创建文件
单击主菜单中的 +
图标即可。这将在主工作区中打开一个新的 Launcher 选项卡,可以能够创建Notebook、控制台、终端或文本编辑器。同样的操作也可以通过使用 File
选项卡来完成。打开后,文件可以重命名,甚至可以下载。
打开现有文件
打开文件是一个非常简单的过程,选择上传图标,从本地上传一个文件。
灵活的布局
布局是很多IDE都有的基本功能,JupyterLab 同样也有这样的功能,通过将所有功能整合到一个交互式和协作环境中来解决这个问题。
Notebooks
JupyterLab 使用的Notebooks文档格式与经典Jupyter Notebook相同。
输入 print("Hello World")
,点击上面播放按钮即执行。
Console
对于习惯于 QT 控制台类型环境的人来说,可以使用 Console,能够在内核中以交互方式运行代码。
完成输入后,选择顶部菜单 Run->Run Cell
即可以看到结果。
Text Editor
文本编辑器使编辑文件成为可能,文本编辑器包括语法突出显示、可配置缩进(制表符或空格)、键映射和基本主题。这些设置可以在 Settings
菜单中找到。
Terminal
JupyterLab 终端为 Mac/Linux 上的系统 shell(bash、tsch 等)和 Windows 上的 PowerShell 提供全面支持。可以使用终端在系统 shell 中运行任何东西,包括 vim 或 emacs 等程序。
增强的 Notebook 功能
Jupyter Lab 并不是 Notebook 格式的重新实现,而只是在现有架构之上的新前端。然而,这个新的前端实现使得可以包含一些在经典 Notebook 中缺失的功能。
展开和折叠单元格
拖放单元格
编辑器中代码自动完成
文本编辑器现在具有代码自动完成功能,它仅在文本编辑器有附加控制台时才启用。
交互式计算
Jupyter Lab的真正能力在于其支持交互式计算,这在数据科学中非常有用。
创建新的输出视图
将使用官方 Jupyter Github 页面上的 Lorenz 微分方程 notebook 。运行一些单元格后,将得到交互式的 Lorenz 吸引子作为输出。有时当有一个交互式输出时,必须上下滚动以找到生成它的代码,这有点令人沮丧。作为解决这个问题的方法,Jupyter Lab 提供了一个选项,可以将输出分解成一个新的标签页,通过使用滑块并更改参数,就像拥有一个伪仪表板一样。
拖拽和编辑 Notebook 之间的单元格
可以在一个 notebook 中拖放单元格。但是,单元格也可以在不同的 notebook 之间拖放。而且,一个 notebook 中的更改也会反映在另一个 notebook 中。
简化代码文档化过程
正确地说,代码阅读的次数远远大于编写的次数。文档编写是编程的一个非常重要的方面,而Jupyter Lab则使这一过程更加容易。在编写Markdown文件时,通常面临的一个问题是必须在不同的控制台中运行代码以检查其是否完美运行,然后再将其包含在文件中,反复切换选项卡非常烦人。
Jupyter Lab 让编辑器和控制台合并到单个视图中。因此,可以同时检查代码、文档并预览整个文件。
扩展
JupyterLab 被设计为一个可扩展的环境,扩展是非常强大的工具,可以极大地提高一个人的生产力。左侧菜单栏切换到第四个扩展管理,然后在搜索框中输入 google ,可以看到搜索结果,如图:
选择第一个进行安装。
不过对于扩展,官方目前支持不太好,新版本很多支持不了。
总结
JupyterLab 是下一代基于Web的用户界面,它拥有丰富的交互计算工具和精心设计的界面,允许用户以新颖的方式将它们组合在一起。它非常强大,提供了各种稳健的工具,使数据分析过程更加顺畅,无疑会提高生产效率。