构建可复现的机器学习 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 反馈 — 无需本地设置。
此课程中的所有课时
- 使用 MLflow 跟踪实验
- 模型注册与版本管理
- 构建可复现的机器学习 pipeline
- 监控生产环境中的模型性能