Learn AI with Python · 课时

Jupyter Notebook 最佳实践

使用编号单元格、提交前清除输出,并用 papermill 执行参数化运行

第 4 / 4 课13 个步骤

Jupyter Notebook 最佳实践 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。

笔记本的双刃剑

Jupyter 笔记本非常适合探索:在单元格中运行代码,直接查看图表,快速迭代。但如果缺乏纪律,同样的灵活性也会导致混乱且无法复现的工作。

本课介绍有助于保持笔记本整洁可信的习惯。

隐藏状态:核心问题

您可以按任意顺序运行单元格,之前的结果也会一直留在内存中。这种隐藏状态意味着,笔记本可能显示正确的输出,却无法通过任何从头开始的新运行复现这些输出。

几乎所有笔记本最佳实践都是为了对抗隐藏状态。

按顺序运行单元格

执行计数(单元格旁的 [1]、[2])应从上到下递增。像上方是 [7]、下方是 [3] 这样的乱序编号,是笔记本依赖隐藏状态的危险信号。

请按照从上到下的顺序编写笔记本,使其读起来合乎逻辑。

重启内核并运行全部

黄金法则是:在信任或提交笔记本之前,请执行 内核 → 重启 & 全部运行。这会清除内存,并从头运行每个单元格。

如果它能从上到下顺利运行,笔记本就是可复现的。如果运行中断,您就找到了隐藏状态导致的错误。

保持单元格专注

每个单元格只完成一个逻辑步骤,可以让笔记本易于阅读和重新运行。请避免让一个庞大的单元格完成十件事,也避免将一个操作分散到许多过小的单元格中。

请使用 Markdown 单元格像撰写报告一样说明各个部分。

将可复用代码移入模块

当某个函数证明有用时,请将它从笔记本移到 src/ 中,并导入它。这样可以让笔记本保持精简,使代码可测试,并避免各个笔记本之间的复制粘贴逐渐偏离。

from src.features.build_features import make_features

X = make_features(df)   # logic lives in a tested module

输出差异问题

笔记本会将单元格输出(文本、大型表格、base64 图像)存储在 .ipynb JSON 中。提交这些输出会让 Git 差异巨大且充满噪声,还可能泄露数据。

解决办法是:在提交前清除输出。

使用 nbstripout 清除输出

nbstripout 会自动从笔记本中移除输出。请将其安装为 Git 过滤器,这样每次提交时都会自动清除输出,无需您记住这一步。

# pip install nbstripout
nbstripout --install      # adds a git filter for this repo
# now committed notebooks have clean, output-free diffs

使用 papermill 为笔记本参数化

papermill 会通过注入参数以编程方式运行笔记本,就像调用函数一样。请将某个单元格标记为 parameters,papermill 就会在每次运行时覆盖这些值。

# pip install papermill
# papermill analysis.ipynb out.ipynb -p dataset "may.csv" -p seed 42

在代码中运行参数化任务

您还可以从 Python 驱动 papermill,让同一个分析笔记本处理许多输入——这是批量运行实验的整洁方式。

import papermill as pm

for ds in ["jan.csv", "feb.csv", "mar.csv"]:
    pm.execute_notebook(
        "analysis.ipynb",
        f"out_{ds}.ipynb",
        parameters={"dataset": ds, "seed": 42},
    )

笔记本整洁检查清单

在共享或提交笔记本之前:

  • 重启内核并运行全部——必须顺利通过
  • 单元格从上到下运行,计数依次递增
  • 可复用逻辑已移至 src/
  • 已清除输出(nbstripout)
  • Markdown 负责说明整个流程

快速检查:信任笔记本

在提交之前,您需要确认笔记本可复现,并且不存在隐藏状态导致的错误。

回顾:笔记本最佳实践

您学会了如何保持笔记本整洁且可复现:

  • 对抗隐藏状态——按顺序运行单元格
  • 在信任或提交之前重启 & 全部运行
  • 将可复用代码移至 src/ 模块
  • 使用 nbstripout 清除输出,以获得整洁的 Git 差异
  • 使用 papermill 参数化并批量运行笔记本

这就完成了人工智能项目结构和 Git 工作流课程。

免费开始

用 AI 导师学习 Python — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
53
课程
225

常见问题解答

「Jupyter Notebook 最佳实践」课时是免费的吗?

是的 — 「Jupyter Notebook 最佳实践」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。

「Jupyter Notebook 最佳实践」这节课中我会学到什么?

使用编号单元格、提交前清除输出,并用 papermill 执行参数化运行 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Learn AI with Python 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「Jupyter Notebook 最佳实践」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Learn AI with Python 课中编写并运行代码吗?

能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 专业人工智能项目目录结构
  2. 人工智能项目的 Git
  3. 可复现性:随机种子、配置与环境
  4. Jupyter Notebook 最佳实践
← 返回 Learn AI with Python