机器学习进阶文档深度页
交叉验证中的 Pipeline 与泄漏
填补、标准化、PCA、特征选择、词表和重采样都必须在当前训练折内部学习。
学习前需要掌握
背景与问题
验证标签即使没直接使用,验证特征统计也会造成泄漏。采样步骤还需支持 sampler 的专用 Pipeline。
概念定义
先对完整 X fit 变换再 cross_val_score 会让验证折影响变换状态。
直观理解
每一折都要从原始训练材料独立准备笔记,不能共享全班统计。
核心原理
把所有有状态步骤与估计器封装;当前验证折只 transform/predict。重采样只作用于训练折。
数学表达
核心表达
把所有有状态步骤与估计器封装;当前验证折只 transform/predict。重采样只作用于训练折。
变量含义
变量定义与本页概念定义一致,代码中的同名变量保持相同语义。
计算步骤
- 1列出所有 fit 步骤
- 2封装 Pipeline
- 3传原始 X 给 CV
- 4重采样用折内工具
代码对应位置
示例 1交叉验证中的 Pipeline 与泄漏 示例:对应文档中的可靠评价或训练流程。
计算与实现步骤
- 1
列出所有 fit 步骤
- 2
封装 Pipeline
- 3
传原始 X 给 CV
- 4
重采样用折内工具
- 5
检查 cv 结果
- 6
最终测试
代码实现
示例 1
交叉验证中的 Pipeline 与泄漏 示例
交叉验证中的 Pipeline 与泄漏 示例
scikit-learn
example_01.py用途:对应文档中的可靠评价或训练流程。
pipeline=make_pipeline(SimpleImputer(strategy="median"),StandardScaler(),PCA(10),LogisticRegression())
scores=cross_val_score(pipeline,X,y,cv=cv)代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
对应文档中的可靠评价或训练流程。
X- 完整特征矩阵,每行一个样本、每列一个特征。
y- 目标标签或连续目标值。
scores- 交叉验证各折的评价分数。
Step 1 · 1–2 行
数据边界和划分方式是代码含义的一部分。
pipeline=make_pipeline(SimpleImputer(strategy="median"),StandardScaler(),PCA(10),LogisticRegression())
scores=cross_val_score(pipeline,X,y,cv=cv)代码与数学原理
减去训练均值并除以训练标准差,对应代码中的 mean/std 或 StandardScaler。
预期输出或运行结果
每一折独立学习填补、缩放和 PCA。
常见错误 · 4 条
- 不要在测试集上调用 fit 或 fit_transform;测试集只能复用训练参数。
- 全数据 fit_transform
- 全数据特征选择
- 全数据 SMOTE
实际应用
- 任何含预处理的 CV
常见错误
全数据 fit_transform
全数据特征选择
全数据 SMOTE
文档来源
13|交叉验证:可靠评估与模型选择原始文档
学习资料/learning_tech/13_cross_validation.md- §9 Pipeline 为什么是关键
推荐学习资料
暂未收录相关资料
参考库不会生成虚假资源或无效外部链接。