news 2026/11/2 21:06:09

pyprobml 软件学习路线指南:Python、ML 工具链与开发环境选型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
pyprobml 软件学习路线指南:Python、ML 工具链与开发环境选型
  • 机器学习
  • 深度学习

【免费下载链接】pyprobml

Python code for "Probabilistic Machine learning" book by Kevin Murphy

项目地址:https://gitcode.com/gh_mirrors/py/pyprobml
点击查看免费下载

本文是 pyprobml 项目(《Probabilistic Machine Learning》一书的 Python 代码仓库)中 python_tutorials.md 的技术导读,围绕"如何学习 Python 与机器学习软件生态、如何在 Notebook 与 IDE 之间选择开发环境"展开。读完本文,你将获得一条从零上手 Python、掌握数据科学/ML 核心库、并能在 Colab 或本地 IDE 中运行 pyprobml 代码的完整路线图。

这份文档在 pyprobml 中的角色

pyprobml 仓库的代码按 notebooks/README.md 的组织约定分为三类:book1、book2目录存放与两本书章节对应的绘图 Notebook;tutorials目录存放与软件使用相关的教学 Notebook,与书本内容解耦;misc则是零散草稿。本文主角 python_tutorials.md 正是 tutorials 目录的入口文档之一,它与 software.md、jax_tutorials.md 一起构成了项目的"软件上手三件套":一份讲 Python/编辑器的入门资源,一份讲完整软件生态,一份专讲 JAX。

换句话说:仓库里 800 多个脚本和 Notebook 都建立在 Python 3 及一套数据科学/深度学习/概率编程工具链之上(README.md 明确说明代码使用 numpy、scipy、matplotlib、sklearn 等标准库,book 2 大量使用 JAX,book 1 部分使用 TensorFlow 2 和少量 PyTorch)。因此在深入复现任何公式、任何图之前,先建立正确的软件认知与开发环境是最高效的路径——这正是本指南存在的意义。

Python 学习资源路线图

原文档按"入门 → 数据科学 → 统计计算 → 可视化 → 高级工具"的顺序精选了 10 份资源,每份都有明确的适用场景。下表完整继承其推荐清单,并按仓库实际技术栈补充了学习重点:

资源作者/性质学习重点
Dive into Python 3Mark Pilgrim 撰写的免费电子书系统学习 Python 3 语言本身,适合零基础通读
Fluent PythonLuciano Ramalho 的专著Python 语言进阶,深入理解数据模型、容器与惯用法
Whirlwind tour of PythonJake Vanderplas快速概览 Python 语法,适合有编程经验者快速热身
Python Datascience HandbookJake Vanderplas 的免费书数据科学全景:NumPy、Pandas、Matplotlib、Scikit-learn 四大件的标准用法
Datascience from scratchO'Reilly 出版用最简 Python 代码从零实现标准 ML 方法,帮助理解算法本质而非调包
Duke 的 BIOS821 课程Duke 大学公开课用 Python 做数据分析的入门课
Duke 的 STA663 课程Duke 大学公开课Python 统计计算,覆盖高性能数值计算实践
scipy-lectures社区维护的 SciPy 教程SciPy 生态(数值、优化、统计)系统教程
Book on matplotlibRougier 的可视化书数据可视化,与仓库中大量 matplotlib 出图代码直接呼应
JAXGoogle 开源的数值库加速版 NumPy + 自动微分,是 pyprobml book 2 的主力计算后端

从仓库源码结构看,这条学习路线与实际代码需求高度吻合:例如 scripts/gauss_utils.py、scripts/mix_gauss_lib.py 等脚本大量依赖 NumPy/SciPy 的矩阵运算与 SciPy 优化器,而 book 2 的hmc_2d_numpyro.py、linreg_bayes_svi_hmc_pyro.ipynb等则直接建立在 JAX/NumPyro 之上。因此"先学语言、再学数据科学栈、最后学 JAX 生态"的次序与仓库代码的演进方向一致。

Notebook 与 IDE:两种开发工作流的取舍

原文档用一段精炼的对比回答了初学者最常见的困惑:什么时候用 Notebook,什么时候用 IDE。

交互式开发:Jupyter / Google Colab

Notebook 的核心特征是"代码与结果混排",非常适合数据探索、公式推导和图谱复现。pyprobml 的官方实践是使用Google Colab:它免费提供 GPU/TPU,且预装了几乎所有需要的库。这一点在 requirements.txt 中写得很清楚——文件头注释"add only those modules/libraries that are pre-installed in colab",其中包含 jax、jaxlib、numpy、scipy、matplotlib、seaborn、scikit-learn、pandas、graphviz、arviz、pyyaml、h5py、requests 等。

仓库 README.md 给出了两个免安装本地环境的实用技巧:把 GitHub 上的 Notebook 页面域名从github.com改成githubtocolab.com即可在任意浏览器中直接以 Colab 打开;或安装 "Open in Colab" 浏览器扩展一键完成同样操作。tutorials 目录里的 colab_intro.ipynb 专门讲解 Colab 的使用细节。

工程化开发:IDE 的适用场景

原文档指出:当开发规模较大的软件项目时,应改用 IDE 将代码与运行结果分离。它列出的候选包括:

  • JupyterLab:浏览器化的 IDE,适合延续 Notebook 习惯的用户;
  • Spyder:面向科学计算的 Python IDE;
  • PyCharm:JetBrains 出品的通用 Python IDE;
  • VS Code:轻量编辑器,最大优势是支持本地编辑、远程虚拟机执行。

"本地编辑 + 远程执行"这条工作流在仓库中有完整的落地文档:gcp_ssh_vscode.md 演示了如何通过 SSH 从 VS Code 连接 GCP 虚拟机(如 Cloud TPU VM):点击左下角绿色图标新建 SSH Host,输入username@ip-address即可连接,之后可以克隆仓库、在 IDE 中编辑代码,并直接在 VS Code 内打开 Jupyter Notebook 做交互式开发。文档还给出了两个关键技巧:

  • 在 Notebook 中执行%run foo.py运行脚本文件,脚本产生的全部全局变量会直接进入 Notebook 命名空间,方便继续交互调试;
  • 在 VS Code 内启动 TensorBoard,由编辑器自动处理端口转发。

从文档到落地:pyprobml 的软件栈全景

将原文档的"软件学习"主题落到仓库实际,就是 software.md 所勾勒的三层生态:

数据科学与 ML 基础层

库用途
NumPy向量与矩阵计算
SciPy科学计算、数学、统计、优化函数
Matplotlib / Seaborn绘图
Pandas / Xarray数据框与带名数组
Scikit-learn除深度学习外的大量 ML 方法
JAX加速版 NumPy + 自动微分

tutorials 目录为其中每一层都配了实战 Notebook:pandas_intro.ipynb、sklearn_intro.ipynb、einsums.ipynb(张量缩并记号)、graphviz_demo.ipynb(绘图/图模型可视化)。requirements.txt 中列出的 seaborn、graphviz、arviz(贝叶斯后验可视化)也与这一层直接对应。

深度学习层

software.md 把深度学习概括为"可微分函数组合 + 自动微分 + 优化器训练 + 服务部署",并列出 TensorFlow 2、JAX、PyTorch、MXNet 四大框架;仓库主体采用 TensorFlow 2 与 JAX,也欢迎 PyTorch 贡献。对应的教程资源包括:jax_intro.ipynb(Kevin Murphy 的 JAX 入门)、practical_jax_tips.ipynb(JAX 实战技巧)、haiku_intro.ipynb(DeepMind 的 DNN 库 Haiku)、text_preproc_jax.ipynb 与 text_preproc_torch.ipynb(文本预处理)、datasets.ipynb 与 tfds_intro.ipynb(TFDS/PyTorch 数据装载)。

值得强调的是 jax_tutorials.md 对 JAX 的定位:它通过编译到 XLA 在 CPU/GPU/TPU 上加速运行,接口几乎与 NumPy 一致,且继承了 autograd 的自动微分能力,可计算高阶导数、逐样本梯度与复杂代码的梯度。由于 JAX 是纯函数式、偏底层,书中选用 Flax 来编写 DNN;围绕 JAX 还生长出 Optax(优化器)、RLax(强化学习)、NumPyro/Distrax/BlackJax(概率编程与 HMC)等专向库。这些背景正是阅读 book 2 大量 JAX 代码前的必要铺垫。

概率编程层

software.md 指出:对 GMM、PCA 等简单模型可直接用 scikit-learn;更复杂的概率模型则需要"概率编程语言"(PPL)。仓库聚焦 PyMC3 与 NumPyro,同时覆盖 TFP、Pyro、PyStan 等方案;对全离散变量的 PGM 则使用 Pgmpy、Pomegranate。tutorials 目录提供了 numpyro_intro.ipynb 与 pyro_intro.ipynb 两份上手材料,可与 notebooks/misc 及 book1/book2 中的贝叶斯推断示例配合学习。

把路线图变成行动

综合原文档、README.md 与 tutorials 目录,建议的实践路径如下:

  1. 零成本起步:对照上文 Python 资源表快速掌握语言与数据科学四大件;然后直接打开 tutorials 目录中的任意 Notebook(如 jax_intro.ipynb),通过 colab_intro.ipynb 了解 Colab 环境,即可在线运行,无需本地安装。
  2. 本地复现:按 README.md 的说明安装依赖——已装好 JAX、TensorFlow、Torch 的前提下,执行pip install -r requirements.txt;或用git clone --depth 1拉取仓库后手动安装(--depth 1可避免拉取庞大历史)。需要保存图片时,先设置环境变量FIG_DIR与DUAL_SAVE=1,供savefig函数写入 PDF/PNG。
  3. 规模化开发:当从"跑通 Notebook"走向"维护较大项目"时,切换为 VS Code + 远程虚拟机(gcp_ssh_vscode.md)或 JupyterLab/Spyder/PyCharm,用 IDE 管理代码、用 Notebook 保留交互式探索。
  4. 按需深入:针对概率建模场景,把 jax_tutorials.md、numpyro_intro.ipynb、pyro_intro.ipynb 作为主攻方向;涉及云端高性能计算时,再查阅 colab_gcp_tpu_tutorial.md(Colab/GCP/TPU 技巧)与 tpu_colab_tutorial.ipynb。

简而言之,python_tutorials.md 是 pyprobml 官方推荐的"学什么、用什么工具"的起点:先用免费资源补齐 Python 与数据科学基础,再依托仓库 tutorials 目录中 20 余个软件教学 Notebook 逐层吃透 JAX、深度学习与概率编程栈,最终在 Notebook(探索)与 IDE(工程)之间找到适合自己项目的平衡点。

  • 机器学习
  • 深度学习

【免费下载链接】pyprobml

Python code for "Probabilistic Machine learning" book by Kevin Murphy

项目地址:https://gitcode.com/gh_mirrors/py/pyprobml
点击查看免费下载
上一篇:字体格式转换Maple Mono:TTF/OTF/WOFF2互转
下一篇:ESP-IDF构建过程中cbor.json文件403错误的解决方案

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/20 0:01:18

题解:洛谷 P1104 生日

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大家订阅我的专栏:算法…

作者头像 李华
网站建设 2026/10/20 0:01:17

零 GC 委托优化实战:游戏大厂的帧预算保卫战

背景:16.6ms 里没有 GC 的位置 AAA 手游和端游的帧预算是死线,不是建议。60fps 意味着每帧 16.6ms,其中渲染、物理、逻辑、音频都在争这块蛋糕。托管 GC(哪怕是 Unity 的增量式 GC)一旦触发,轻则 0.5ms&…

作者头像 李华
网站建设 2026/10/20 0:01:16

25天打卡训练营实况:从三次弃营到稳定输出的系统方法

这篇稿子的缘起很简单:我今天早上在训练营小程序里按下“1.25训练营打卡”的确认键时,发现自己已经连续打卡 25 天,而这期 30 天的营期只剩下最后 5 天。过去半年里,我报名过三次类似的目标型打卡训练营,分别坚持了 11…

作者头像 李华
网站建设 2026/10/20 0:01:17

题解:洛谷 P2141 [NOIP 2014 普及组] 珠心算测验

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大家订阅我的专栏:算法…

作者头像 李华