[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ]
0x00 Jupyter Notebook 简明指南
描述:前面我们已经在机器学习工作站(Ubuntu 24.04 Desktop
+ Geforce RTX 4070Ti SUPER
)中安装 Anaconda
工具包,其中也包含了 Jupyter Notebook
(/ˈdʒuːpɪtə(r)/ /nəʊtbʊk/
)工具及其相关依赖项,接下来我们简单介绍一下 Jupyter Notebook
一个Web在线交互计算的工具集,及其安装、配置、使用方法,给各位初次学习机器的朋友做一个指引!
温馨提示:作者机器学习相关笔记会更新在《AIGC学习之路》专栏,此专栏内容默认你已经具备基础 Python 编程能力,同时学习过高等数学、线性代数、概率论等大学本科范围的数学知识。如果忘记了不用担心,会逐步帮助你记起来。
温馨提示:若各位看友在其他平台看到此篇文章,一定要关注公众号【全栈工程师修炼指南】进行持续学习!我们一同学习,一起进步,关注后回复【加群】哟!
原文链接:机器学习筑基篇,Jupyter Notebook 精简指南前面我们已经在机器学习工作站中安装Anaconda工具包,其中也包含了jupyter Notebook工具及相关依赖项,接下来简单介绍一下其工具作为一个Web在线交互计算的工具集,及其安装、配置、使用方法,给各位初次学习机器的朋友做一个指引https://mp.weixin.qq.com/s/hL53OO2unouuWJxeZeyVcQ
1.背景
如果你从零基础学习过 Python 编程语言,可能听说过 IPython,它是一种基于 Python 的交互式解释器, 相较于原生的 Python Shell,IPython 提供了更为强大的编辑和交互功能, 随着其发展推出了 IPython Notebook,它完整地继承了 IPython 的交互式特性,同时以 Web 形式运行,它的出现让数据分析和机器学习的过程变得高效。
再之后,在谷歌、微软等互联网巨头的赞助下,IPython Notebook 发展成为更加成熟和完善的开源项目,并更名为 Jupyter Notebook 并且已经成为现代处理数据的必备工具。
从数据清理、数据可视化、数据分析,再到后面的建立机器学习或深度学习模型,都可以在 Jupyter Notebook 完成。同时,Jupyter Notebook 可以保留代码运行后的结果,方便内容的重用,以及回顾做过的工作。
文章来自公众号【全栈工程师修炼指南】,请大家多多支持!
2.介绍 Jupyter Notebook
什么是 Jupyter Notebook?
Jupyter Notebook (以前称为 IPython Notebook )是用于跨所有编程语言进行交互式计算的免费软件、开放标准和web服务,它允许用户将代码、注释、方程式、可视化内容等整合到一个文档中,并支持多种编程语言,如 Python、R、Julia 等高级编程语言。它在数据科学、机器学习、深度学习、人工智能和教育领域中得到了广泛的应用。
官网地址:https://jupyter.org/
3.安装 Jupyter Notebook
描述: 你可以参考官方文档进行安装 Jupyter Notebook ,不过此处作者的建议是使用 Anaconda 工具包进行安装,正如作者前一篇文章中的实践流程,除此之外,你还可以在本地使用 pip
安装 Jupyter Notebook,或者在浏览器中使用 GetVM
提供的 Jupyter Notebook 在线环境。
方式1. 使用 Anaconda 工具包安装,参考文章: 《机器学习筑基篇,Ubuntu 24.04 安装使用 Anaconda 工具包》,此处UP主选择的方式。
方式2. 使用 pip 安装,依赖于 Python 环境请自行安装,官网文档 https://jupyter.org/install
# Install the classic Jupyter Notebook with:
pip install notebook
# To run the notebook:
jupyter notebook
方式3. 使用 GetVM 提供的 Jupyter Notebook 在线环境,免费计划每天有5次(每次半小时)的使用时间,满足低频日常学习的需求,同时为了避免被挖矿等滥用行为,开发者增加了网络限制,从而不能访问外网。
GetVM 是一个 Google Chrome 浏览器扩展,它可以帮助你在浏览器中快速创建一个 Linux 虚拟机,与本地环境完全隔离。你可以选择直接打开预设模板,例如 Jupyter Notebook,VS Code,Ubuntu Desktop 等。地址:https://getvm.io
4.配置 Jupyter Notebook
描述:由于UP主是通过 Anaconda 工具包安装的 Jupyter Notebook,其默认的监听地址和端口为 localhost:8888
因此只能本地访问,若其他主机设备需要访问,则需要重新配置一下 Jupyter Notebook 的监听地址和端口,同时为了安全起见,需要配置一下 Jupyter Notebook 的密码,避免非授权用户通过端口访问。
操作步骤
Step 1.进入 Conda 环境中,执行如下命令生成 Jupyter Notebook 配置文件。
(base) weiygeek@Super-Server:~/桌面$ jupyter notebook --generate-config
Writing default config to: /home/weiygeek/.jupyter/jupyter_notebook_config.py
Step 2.生成 Jupyter Notebook 的访问密码文件,打开获取密码的 Hash 值。
(base) weiygeek@Super-Server:~/桌面$ jupyter notebook password
# Enter password: weiyigeek.top
# Verify password: weiyigeek.top
# [JupyterPasswordApp] Wrote hashed password to /home/weiygeek/.jupyter/jupyter_server_config.json
(base) weiygeek@Super-Server:~/桌面$ cat /home/weiygeek/.jupyter/jupyter_server_config.json
# "IdentityProvider": {
# "hashed_password": "argon2:$argon2id$v=19$m=10240,t=10,p=8$ts7wW8G8A+qywpvi2A0qzg$DcOg7yWmOkwaebT90pItoJARMdAwGn80KbWjWTpoYOE"
# }
Step 3.修改 Jupyter Notebook 配置文件,添加如下内容。
(base) weiygeek@Super-Server:~/桌面$ vim /home/weiygeek/.jupyter/jupyter_notebook_config.py
(base) weiygeek@Super-Server:~/桌面$ grep -v "#" /home/weiygeek/.jupyter/jupyter_notebook_config.py | sed '/^$/d'
# 关键配置
# 配置 工作目录
c.JupyterNotebookApp.workspaces_dir = '/home/weiygeek/notebook'
# 配置 监听地址及端口
c.ServerApp.ip = '0.0.0.0'
c.ServerApp.port = 8888
# 配置 Jupyter Notebook 的访问密码
c.PasswordIdentityProvider.hashed_password = 'argon2:$argon2id$v=19$m=10240,t=10,p=8$ts7wW8G8A+qywpvi2A0qzg$DcOg7yWmOkwaebT90pItoJARMdAwGn80KbWjWTpoYOE'
c.PasswordIdentityProvider.password_required = True
Step 4.最后启动执行如下命令 Jupyter Notebook
启用服务,此处便可通过工作站主机IP+端口进行访问,之后输入认证密码,即可访问到Jupyter Notebook
主界面。
(base) weiygeek@Super-Server:~/桌面$ jupyter notebook
4.使用 Jupyter Notebook
1.创建一个新的Note Book
前面设置了 Jupyter Notebook 默认工作目录为 /home/weiygeek/notebook
里面是空的,现在我们创建一个新的 Note Book,点击右上角的 “New” 按钮来新建一个ipynb 文件,并从下拉菜单中选择一个内核(通常是 Python 3),这将创建一个新的 Notebook,并自动打开一个新的标签页。
因为 jupyter Notebook 支持多种数据可视化库,如 matplotlib、seaborn、plotly 等,这里使用 matplotlib 绘制一个简单的折线图。
import matplotlib.pyplot as plt
# 创建一些数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 绘制折线图
plt.plot(x, y)
plt.title('Simple Line Plot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.show()
2.编写和运行代码
在新的 Notebook 中,你会看到一个空的代码单元格,每一个单元格会有三种模式,分别是 Markdown
(md) 和 Code
(代码)以及 Raw
(文本),内容说明一般都是以 Markdown 单元格展示,而你需要动手练习的代码将在 Code 单元格中执行;每个单元格的后面提供了一个菜单栏,可以对单元格进行操作,这些菜单栏包括了单元格的复制、上移、下移、删除等操作。
假如,你需要切换单元格运行模式,可通过顶部的选项来切换单元格的模式,也可以点击单元格头部使用快捷键 M
切换到 Markdown 模式,使用快捷键 Y
切换到 Code 模式,使用快捷键 R
切换到 Raw 模式。
假如,你要运行在这个单元格中编写Py代码,只需按 Shift + Enter
运行它,你也可以按 Ctrl + Enter
运行代码并在下方插入一个新的单元格,代码执行结果将直接显示在下方的单元格输出区域中。
# 1.选中编辑 Markdown单元格,运行(Shift + Enter)此单元格时,它会被渲染成格式化的文本。
# 机器学习第一课
这是一个 Markdown 单元格的示例。
- 无序列表项 1
- 无序列表项 2
[链接到 Google](https://www.google.com)
这是一个数学方程:
$$
e^{i\pi} + 1 = 0
$$
# 2.选中单元格,并按 Shift + Enter
print('hello world!')
例如,在 Jupyter Notebook 中,你可以像在任何 Python 脚本中一样导入库和加载数据,这里,你可以使用 pandas 库来加载 CSV 文件:
# 导入模块
import pandas as pd
# 加载 CSV 文件
data = pd.read_csv('test.csv')
# 显示数据的前几行
display(data.head())
3.单元格顺序执行
无论是 Markdown 单元格,还是 Code 单元格,它们在课程中都是按照从上到下的顺序依次执行的。后面的单元格需要等待前面的单元格执行完成后,才能继续执行。执行完成的单元格左侧会出现 In [序号] 的标志,例如:
a = 2
b = 10
# 需要先执行上方单元格给 a,b 变量赋值才能执行我呢~
c = a ** b
# 输出结果
print(c)
温馨提示:为了方便,Jupyter Notebook 中的 print() 打印操作并不是必须的,例如上方的单元格, a ** b 就能直接输出结果。
4.代码补全
在 Jupyter Notebook 中,可以通过 Tab 键激活代码补全功能,例如
# 当我们在使用 import 导入模块时,只需输入 im ,然后按 Tab 键
im
# 若要某个模块下包含函数的自动补全,必须要导入模块之后才会生效。
import numpy as np
# 使用 Tab 键自动补全 np. 下面的类和相关函数。
np.
# 实例
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
a + b
# array([5, 7, 9])
a = np.array([[1, 2], [3, 4]])
print (a)
[[1 2]
[3 4]]
5.函数说明
在 Jupyter Notebook 中,可以通过【鼠标点击导入包的函数
】并按 shift + tab
查看函数帮助说明功能,例如
# 运行导入 pprint 模块
import pprint
# 执行模块中的 pprint 函数
pprint.pprint([1,2,3,4,5,'w',"weiyigeek"])
# 鼠标点击至 pprint.pprint 并按 shift + tab 查看使用建议
Signature:
pprint.pprint(
object,
stream=None,
indent=1,
width=80,
depth=None,
*,
compact=False,
sort_dicts=True,
underscore_numbers=False,
)
Docstring: Pretty-print a Python object to a stream [default is sys.stdout].
File: /data/anaconda3/lib/python3.12/pprint.py
Type: function
6.执行状态
描述:对于复杂度高的代码,往往会意味着更长的执行等待时间。在 Jupyter Notebook 中,当一个单元格处于执行状态时,单元格前面会出现 In [*]
符号,只有执行完成的单元格, [] 中的 * 才会变成相应的序号。
除此之外,你可以通过页面右上角的 Kernel 状态指示器判断内核占用情况。如果 Python 字符右边出现了实心圆圈 ◉
,代表内核处于占有状态。而空心圆圈 ◯
则代表内核处于空闲状态。当然也可能出现链接断开的符号,那就代表着内核已经断开链接,你可能需要刷新页面或重启实验环境。
例如,我们遍历一个链表数组,每两秒打印其中一个元素,查看状态的变化!
import time
languages = ["C", "C++", "Perl", "Python","Go"]
for x in languages:
time.sleep(2)
print (x)
7.重启内核
描述:当复杂代码执行时间过长,可能会造成实验环境资源占用大而 Notebook 出现「假死」的现象,此时我们可以通过重启内核的操作来解决,重启内核的按钮在环境的顶部,点击 🔁 样式按钮后会弹出确认对话框,点击 Restart 即可。
8.强制终止
有的时候,如果代码运行时间过长,或者陷入死循环,我们会想到强制终止单元格的运行状态。此时,顶部的 ⬛ 按钮就发挥作用了。
例如,运行下方无限循环代码,并执行强制终止操作。
import time
while True:
print("hello, shiyanlou.")
time.sleep(1)
9.保存和共享
你可以通过点击工具栏中的 “Save” 按钮来保存你的 Notebook,Notebook 将保存为一个 .ipynb 文件,该文件包含了你的代码、输出、Markdown 文本和任何嵌入的可视化内容。
要共享你的 Notebook,你可以将其导出为 HTML、PDF 或其他格式,或者将其上传到一个支持 Jupyter Notebook 的在线平台(如 GitHub、GitLab、Google Colab 等)。这样,其他人就可以在你的 Notebook 上运行代码、查看结果和进行交互了。
更多 Jupyter Notebook 操作说明,请参考:Jupyter Notebook 官方文档
文章来自公众号【全栈工程师修炼指南】,请大家多多支持!
5.快捷键 jupyter Notebook
描述:为了提供我们在使用 Jupyter Notebook 进行机器学习的效率,我们有必要了解一些快捷键。
-
H
:查看所有快捷键。 -
S
:保存当前 Notebook 内容。 -
P
:调出 Notebook 命令栏。 -
B
:在当前单元格下方新建空白单元格。 -
M
:将单元格格式转换为 Markdown。 -
Y
:将单元格格式转换为 Code。 -
连续按
D+D
:删除当前单元格。(慎用,推荐使用 X 剪切单元格代替,因为其可以起到删除效果,且删错了还可以粘贴回来)。 -
连续按
I+I+I
:强制中止内核(当某个单元格执行时间较长或卡住时,可以强行中止,中止后前序单元格状态依旧保留,非常好用)。 -
Shift + Enter
:运行当前单元格内容。(当 Markdown 单元格处于编辑状态时,运行即可复原)。 -
Ctrl + Enter
: 运行代码并在下方插入一个新的单元格。 -
Tab
: 模块函数代码自动补全。 -
Shift + Tab
: 鼠标点击函数,在按下此快捷点即可查看函数帮助说明功能。
温馨提示:所有快捷键触发式,需保证单元格处于选中状态,而非编辑状态。
6.总结
Jupyter Notebook 是一个功能强大的工具,它提供了一个交互式和可重复的环境来编写、运行和共享代码和数据。通过本文的介绍,你应该已经了解了如何安装配置 Jupyter Notebook,并掌握了其基本使用方法。现在,你可以开始使用 Jupyter Notebook 来探索数据、构建模型、进行可视化等任务了。
温馨提示:作者最近10年的工作学习笔记(涉及网络、安全、运维、开发),需要学习实践笔记的看友,可添加作者账号[WeiyiGeeker],当前价格¥199,除了获得从业笔记的同时还可进行问题答疑以及每月远程技术支持,希望大家多多支持,收获定大于付出!
如果此篇文章对你有帮助,请你将它转发给更多的人!
学习推荐 往期文章
-
🔥【最新】机器学习筑基篇,Ubuntu 24.04 安装使用 Anaconda 工具包
-
💡【相关】Python实践之使用pytorch模型学习框架easyocr模块批量识别大数据通信行程码图片并使用Flask返回json字符串
-
💡【相关】一图对比,Python 与 Java 语言代码运行机制
感觉文章不错的童鞋,请帮忙转发,点 👍、在看,若有疑问的小伙伴,可在评论区留言你想法哟💬!