如果说 Python 是 AI 圈的"普通话",那这一页就是普通话的专业八级教程。从最底层的 NumPy(数值计算)→ Pandas(表格分析)→ Matplotlib(画图)→ Scikit-learn(机器学习)→ PyTorch(深度学习),一条线打通。版本基线:NumPy 2.x、Pandas 2.2+、Matplotlib 3.9+、Scikit-learn 1.5+、PyTorch 2.4+。前置要求:先看完隔壁《Python 基础》那一页。
| 库 | 版本基线 | 说明与注意事项 |
|---|---|---|
| Python | 3.13 / 3.14 | 3.13 起启动和性能有明显优化;3.14 仍在快速演进,生产环境建议先锁定 3.13,深度学习库通常滞后 1~2 个版本支持最新 Python。 |
| NumPy | 2.x | 2024 年发布的大版本,与 1.x 不兼容:移除了大量废弃 API(如 np.float、np.int 等别名、旧的随机数 API),很多下游库需要升级才能用。装完先 pip install -U numpy。 |
| Pandas | 2.2+ / 3.x | 2.2 起对 PyArrow 后端、字符串类型支持更好;3.x 若已发布请以官网最新稳定版为准。强烈建议用 PyArrow 字符串后端,pd.options.mode.dtype_backend = "pyarrow",能省一大截内存。 |
| Matplotlib | 3.9+ / 3.10 | 新默认样式、改进了 3D 与交互后端;Seaborn 0.13+ 与之配合。 |
| Scikit-learn | 1.5+ / 1.6 | 1.5 起要求 Python 3.9+;OneHotEncoder(sparse_output=) 取代旧的 sparse=;1.6 进一步统一 API。 |
| PyTorch | 2.4+ / 2.5 / 2.6 | 2.x 默认动态图,torch.compile 可一键加速(model = torch.compile(model)),分布式用 torchrun。版本号以官网最新稳定版为准,CUDA 版本要和你驱动匹配。 |
| TensorFlow / Keras | 2.17+ / 2.18 | Keras 3.x 默认多后端(可跑在 JAX/PyTorch 上),与 PyTorch 生态二选一即可。 |
| Transformers / Datasets / Tokenizers | 4.4x / 4.5x · Datasets 3.x · Tokenizers 0.20 | HuggingFace 全家桶;4.4x 起对 return_tensors="pt"、padding=True, truncation=True 支持完善。 |
| JAX | 0.4x | Google 的函数式深度学习框架:函数式 + 自动微分 + 原生支持 TPU。研究圈用来写超大规模训练,工业界主流仍是 PyTorch。 |
如果你 pip install 一堆老项目,跑起来报 AttributeError: module 'numpy' has no attribute 'float'——这就是 NumPy 2.x 把 1.x 的别名删了。两种解法:① 升级下游库(pip install -U pandas scikit-learn);② 临时降级:pip install "numpy<2"。新项目一律用 2.x,别再回退。
本页目录
为什么 Python 是 AI 首选 & 环境
Why Python for AI & Setup
NumPy:数值计算地基
NumPy Arrays & Broadcasting
Pandas:Excel 的 Python 版
Pandas DataFrame
Matplotlib:把数据画出来
Matplotlib & Seaborn
Scikit-learn:机器学习瑞士军刀
Scikit-learn ML Pipeline
PyTorch:深度学习入门
PyTorch: Tensors, Autograd & nn.Module
AI 实战项目综合
End-to-End Projects & Deployment
常见坑与最佳实践
Pitfalls & Best Practices
学习路径与资源推荐
别贪多。下面这条路线是无数人踩坑后总结的:先把 NumPy/Pandas 用熟,再 Scikit-learn 跑通分类回归,最后再碰 PyTorch。每个阶段都要动手跑代码,光看不练等于白看。
| 阶段 | 学什么 | 检验标准 |
|---|---|---|
| 第 1 月 | NumPy + Pandas 基础,读 CSV、筛选、groupby。 | 能把一份销售 CSV 洗干净并出三张图。 |
| 第 2 月 | Matplotlib/Seaborn 画图,EDA 探索性分析。 | 给一份数据,10 分钟内画出关键分布图。 |
| 第 3 月 | Scikit-learn 全流程:预处理、切分、训练、评估。 | 独立跑通 Titanic 入门赛,AUC 超过 0.8。 |
| 第 4-5 月 | PyTorch:Tensor、autograd、nn.Module、训练循环。 | 自己写代码训出 MNIST 97% 准确率。 |
| 第 6 月+ | 选一个方向深入:CV / NLP / 推荐系统 / LLM 应用。 | 完成一个端到端项目并部署成 API。 |
免费资源
| 资源 | 特点 |
|---|---|
| Kaggle | 免费数据集 + 比赛 + 公开 notebook,入门首选。 |
| Scikit-learn 官方文档 | 有"教程"章节,例子完整,比书新。 |
| PyTorch 官方 60 分钟教程 | 从 Tensor 到训练 CIFAR-10,官方出品。 |
| 吴恩达 Machine Learning | 网课经典,理论入门(注意新版用 Python)。 |
| fast.ai | 自上而下:先训出效果,再回头讲原理,适合有编程基础的人。 |
① 跳过数学直接调库:能跑,但遇到问题完全不知道怎么调。至少把"线性代数基础 + 概率统计直觉"过一遍。
② 一上来就学 Transformer:先把逻辑回归、决策树、全连接网络搞懂,再碰注意力机制。
③ 只看不动手:收藏 100 个教程不如跑通 1 个 MNIST。
一句话总结
论这一页到底学了什么
NumPy 管算,Pandas 管洗,Matplotlib 管看,Scikit-learn 管经典 ML,PyTorch 管深度学习。五个工具串起来,就是从原始数据到模型上线的全链路。工具会更新,版本会变,但"数据 → 特征 → 训练 → 评估 → 部署"这套流程十年不变。
别贪多。先把 NumPy 和 Pandas 用熟,再碰模型。能在 Jupyter 里把一份脏数据洗干净、出三张图,你就已经超过 80% 的"调包侠"了。
有 GPU 是加分项,没有也别焦虑——小数据集 CPU 完全够学。等你真要训大模型了,Colab 免费 GPU 先用着。
最后一句:模型不是终点,解决问题才是。能用一个简单的随机森林帮老板看清销售数据,比训出一个 99% 准确率的花架子有价值得多。
祝你调参顺利、loss 曲线往下走、GPU 不爆显存。
下一站,等你把 MNIST 跑通了,就去 Hugging Face 上玩预训练大模型——那才是 2026 年 AI 应用的主战场。
本页到此结束,回到 software.html 继续看别的方向吧。
祝学习顺利。
—— 本学习门户
(完)
① 别囤课:一个教程做完比收藏十个强。
② 数据 > 模型:好数据 + 简单模型,永远赢过烂数据 + 复杂模型。
③ 先复现别人的结果,再改:拿 Kaggle 公开 notebook 跑通,再动手改。
小结 & 自测题
从 NumPy 到 PyTorch,你已经把 AI 数据科学的全链路走了一遍。记住:工具是次要的,思维是主要的——先想清楚"数据从哪来、要预测什么、怎么评估好坏",再选库。下面 5 道题。
1.(概念题)NumPy 数组为什么比 Python 列表快那么多?
查看答案
答案:三点——① 内存连续存储,缓存友好;② 底层是 C 实现,不用走 Python 解释器的循环;③ 向量化运算,一次调用跑完一整组数据,没有 Python 层的逐条开销。解析:这也是为什么 Pandas、PyTorch 都建立在 NumPy 数组之上。
2.(代码题)Pandas 里想"按部门分组,算每组工资的平均值",一行代码怎么写?
查看答案
答案:df.groupby("部门")["工资"].mean()。解析:先 groupby 分组,再选列,再聚合。如果要多指标就用 .agg(["mean","max","count"])。
3.(概念题)为什么"切分训练/测试集"必须在"标准化"之前?
查看答案
答案:如果先标准化再切分,测试集的均值/方差会参与到 scaler 的 fit 中——这就是数据泄漏。模型在训练时已经"偷看"过测试集的分布,本地准确率虚高,上线就崩。正确顺序:切分 → 用训练集 fit scaler → transform 两边。
4.(概念题)PyTorch 训练循环里,optimizer.zero_grad() 必须在什么时候调用?忘了会怎样?
查看答案
答案:每个 batch 的开头(前向传播之前)。忘了的话,loss.backward() 会把新梯度累加到上一个 batch 的梯度上——优化器用的梯度是错的,模型训练会发散或卡住。解析:PyTorch 默认梯度是累加的(这是故意的,方便做梯度累积),所以你要主动清零。
5.(判断题)某模型在测试集上准确率 99%,但实际线上效果很差。可能是什么原因?
查看答案
参考答案:① 数据泄漏(测试集信息混进训练);② 训练集和线上数据分布不一样(比如训练集都是白天的图,上线是夜间的);③ 类别不平衡,准确率是假的(全猜多数类也能 99%);④ 测试集太小,99% 是运气。解析:准确率单一指标不可信,要看混淆矩阵、交叉验证、线上真实分布。
① 动手跑 MNIST:用上面的代码,自己在 Jupyter 里跑一遍,看准确率曲线。
② Kaggle 入门赛:Titanic 生存预测、房价预测,别人公开的 notebook 跟着改。
③ 大模型方向:传统 ML 熟练后,再学 Hugging Face Transformers、LangChain,进入 LLM 应用层。
综合练习题(5 道)
把整页知识串起来。建议先自己想 10 分钟,再点开答案。
练习 1.(NumPy 广播)给定矩阵 X = np.arange(12).reshape(3,4),如何在不写循环的前提下,把每一行都减去这一行的平均值?
查看答案
答案:X - X.mean(axis=1, keepdims=True)。解析:X.mean(axis=1) 形状是 (3,),会和 (3,4) 广播失败;加 keepdims=True 后形状是 (3,1),可以正确广播到每一行。这是 NumPy 广播最经典的考点。
练习 2.(Pandas 时间序列)有一份销售 CSV,列是 date, product, revenue,怎么算"每个产品的月度销售额环比增长率"?
查看答案
答案:df['date'] = pd.to_datetime(df['date']); monthly = df.groupby(['product', pd.Grouper(key='date', freq='ME')]).revenue.sum().reset_index(); monthly['mom'] = monthly.groupby('product').revenue.pct_change()。解析:先按产品+月份聚合,再按产品分组做 pct_change()。
练习 3.(sklearn 流水线)数据里有数值列和类别列,类别列有未知类别(训练集没见过)。怎么用 Pipeline 安全地处理?
查看答案
答案:用 ColumnTransformer + OneHotEncoder(handle_unknown="ignore"),未知类别会被全 0 编码,不会报错。数值列用 SimpleImputer + StandardScaler。整个套进 Pipeline,再交给 GridSearchCV。
练习 4.(PyTorch 训练)训练 MNIST 时发现:训练 loss 一直降到 0.05,但验证 loss 在第 5 轮后就开始上升。这是什么现象?怎么治?
查看答案
答案:典型过拟合。对策:① 早停(patience=3~5,在验证 loss 最低时保存权重);② 加 Dropout;③ 加数据增强;④ 降低模型复杂度(减少隐藏层);⑤ L2 正则化(weight_decay);⑥ 加更多数据。
练习 5.(综合判断)下列操作哪些会导致数据泄漏?
① 先标准化全量数据再 train_test_split;
② 在 Pipeline 里 fit 预处理;
③ 用全量数据做 PCA 再切分;
④ 用 StratifiedKFold 切分;
⑤ 把测试集的均值填充到训练集缺失值。
查看答案
答案:① ③ ⑤ 是数据泄漏。② 和 ④ 是正确做法。解析:标准化、PCA、缺失值填充都只能用训练集统计量(均值、方差、主成分)去 fit,测试集只能 transform。否则测试集信息"漏"到训练里,本地指标虚高。Pipeline 之所以好用,就是因为它在交叉验证时每折都独立 fit 预处理。