0Pricing
Learn AI with Python · 课时

构建可复现的机器学习 pipeline

sklearn Pipeline、使用 joblib 持久化管道,以及通过配置文件运行参数化任务。

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

为什么要保证可复现?

无法复现的结果不是科学,而是运气。可复现的流水线能够确保相同的数据和配置始终生成相同的模型,这对于调试、审计和团队协作至关重要。

sklearn 流水线

scikit-learn 流水线会将预处理和模型串联为一个对象,因此训练时应用的变换会在推理时以完全相同的方式应用,从而消除训练与服务之间的偏差。

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier

pipe = Pipeline([
    ("scaler", StandardScaler()),
    ("model", RandomForestClassifier(n_estimators=200))
])
pipe.fit(X_train, y_train)

将流水线持久化为工件

由于整个流水线是一个对象,您可以将其保存为单个工件并在任何地方重新加载,同时确保预处理过程会随模型一起保存。

joblib.dump 与 load

joblib 能够高效地序列化 scikit-learn 对象(相比 pickle,它对大型 NumPy 数组的处理更好)。保存拟合后的流水线,然后在提供服务时重新加载。

import joblib

joblib.dump(pipe, "pipeline.joblib")        # save
loaded = joblib.load("pipeline.joblib")    # reload
preds = loaded.predict(X_new)

用于超参数的 YAML 配置

硬编码的值会掩盖某次运行使用了什么设置。将所有超参数放入 YAML 文件中,这样每个设置都明确记录、受版本控制,并且无需编辑代码即可修改。

# config.yaml
model:
  n_estimators: 200
  max_depth: 8
data:
  test_size: 0.2
  random_state: 42

加载配置

在启动时读取一次 YAML,然后将其中的值传入流水线,让一个文件驱动整个运行过程。

import yaml

with open("config.yaml") as f:
    cfg = yaml.safe_load(f)

model = RandomForestClassifier(
    n_estimators=cfg["model"]["n_estimators"],
    max_depth=cfg["model"]["max_depth"]
)

固定随机种子

要保证可复现,还需要在所有地方固定随机种子:训练/测试拆分、模型初始化以及任何随机打乱操作。将种子存储在 YAML 配置中,以确保设置明确且一致。

from sklearn.model_selection import train_test_split

X_tr, X_te, y_tr, y_te = train_test_split(
    X, y, test_size=cfg["data"]["test_size"],
    random_state=cfg["data"]["random_state"]
)

使用 Makefile 实现可重复步骤

Makefile 会将流水线的每个阶段转换为一个命名目标,因此任何人都可以运行 make train,而不必记住很长的命令。这样可以统一团队中的工作流程。

定义 Make 目标

常见目标包括 make data、make train 和 make evaluate,每个目标都会调用相应的脚本。

# Makefile
data:
	python src/prepare_data.py

train:
	python src/train.py --config config.yaml

evaluate:
	python src/evaluate.py --config config.yaml

串联依赖关系

Make 目标可以相互依赖,因此如果需要,make train 会先运行 data,确保流水线始终按正确顺序运行。

train: data
	python src/train.py --config config.yaml

整合所有内容

一个可复现的设置包括:使用 joblib 持久化的流水线、写入 YAML 的全部超参数、固定的随机种子,以及通过 make data / train / evaluate 暴露操作的 Makefile。任何人都可以克隆代码仓库并复现您完全相同的模型。

快速检查

测试您对可复现流水线的掌握情况。

回顾

您构建了可复现的流水线:通过 joblib.dump/load 持久化的 sklearn 流水线、写入 YAML 配置的全部超参数、固定的随机种子,以及包含 make data / train / evaluate 目标的 Makefile。下一部分:监控生产环境中的模型。

常见问题解答

「构建可复现的机器学习 pipeline」课时是免费的吗?

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

「构建可复现的机器学习 pipeline」这节课中我会学到什么?

sklearn Pipeline、使用 joblib 持久化管道,以及通过配置文件运行参数化任务。 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

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

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

「构建可复现的机器学习 pipeline」课时需要多长时间?

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

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

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

此课程中的所有课时

  1. 使用 MLflow 跟踪实验
  2. 模型注册与版本管理
  3. 构建可复现的机器学习 pipeline
  4. 监控生产环境中的模型性能
← 返回 Learn AI with Python