Python AI 数据科学 · NumPy 2.x / PyTorch 2.4+

如果说 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 基础》那一页。

最新版本与兼容性基线(以官网最新稳定版为准,下表为写作时的参考版本)
库版本基线说明与注意事项
Python3.13 / 3.143.13 起启动和性能有明显优化;3.14 仍在快速演进,生产环境建议先锁定 3.13,深度学习库通常滞后 1~2 个版本支持最新 Python。
NumPy2.x2024 年发布的大版本,与 1.x 不兼容:移除了大量废弃 API(如 np.float、np.int 等别名、旧的随机数 API),很多下游库需要升级才能用。装完先 pip install -U numpy。
Pandas2.2+ / 3.x2.2 起对 PyArrow 后端、字符串类型支持更好;3.x 若已发布请以官网最新稳定版为准。强烈建议用 PyArrow 字符串后端,pd.options.mode.dtype_backend = "pyarrow",能省一大截内存。
Matplotlib3.9+ / 3.10新默认样式、改进了 3D 与交互后端;Seaborn 0.13+ 与之配合。
Scikit-learn1.5+ / 1.61.5 起要求 Python 3.9+;OneHotEncoder(sparse_output=) 取代旧的 sparse=;1.6 进一步统一 API。
PyTorch2.4+ / 2.5 / 2.62.x 默认动态图,torch.compile 可一键加速(model = torch.compile(model)),分布式用 torchrun。版本号以官网最新稳定版为准,CUDA 版本要和你驱动匹配。
TensorFlow / Keras2.17+ / 2.18Keras 3.x 默认多后端(可跑在 JAX/PyTorch 上),与 PyTorch 生态二选一即可。
Transformers / Datasets / Tokenizers4.4x / 4.5x · Datasets 3.x · Tokenizers 0.20HuggingFace 全家桶;4.4x 起对 return_tensors="pt"、padding=True, truncation=True 支持完善。
JAX0.4xGoogle 的函数式深度学习框架:函数式 + 自动微分 + 原生支持 TPU。研究圈用来写超大规模训练,工业界主流仍是 PyTorch。
NumPy 2.x 升级雷区

如果你 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,别再回退。

路

学习路径与资源推荐

Learning Roadmap

别贪多。下面这条路线是无数人踩坑后总结的:先把 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 跑通,再动手改。

测

小结 & 自测题

Summary & Quiz

从 NumPy 到 PyTorch,你已经把 AI 数据科学的全链路走了一遍。记住:工具是次要的,思维是主要的——先想清楚"数据从哪来、要预测什么、怎么评估好坏",再选库。下面 5 道题。

自测 · Python AI 数据科学

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 道)

Exercises

把整页知识串起来。建议先自己想 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 预处理。