交叉验证结果报告
报告划分器、折数、种子、群组/时间定义、指标、每折结果、均值波动、搜索范围和独立测试。
学习前需要掌握
背景与问题
只写“交叉验证得分 0.9”无法让读者判断结论。折数、数据边界、指标口径和搜索过程都会影响分数;一个均值还可能隐藏不稳定折或关键群体失败。
报告应让别人能够重建评价问题与流程,同时区分开发分数、最终测试结果和对不确定性的合理解释。
概念定义
结果报告必须让他人重建评价协议,而不是只给一个“CV=0.97”。
直观理解
分数没有考试规则就无法解释和复现。
核心原理
至少记录数据版本、评价单位、划分器配置与实际索引、随机种子、预处理和模型参数。分组与时间任务还要说明实体定义、时间跨度及间隔,单独记录随机种子不能替代完整协议。
每折分数、均值、折间标准差与样本量应一起保留。下方公式中的标准差是折分数的描述性波动;由于训练集重叠,不能把折分数直接当成独立样本来套普通置信区间。
模型比较最好使用同一组划分,保留每折成对差异和重要切片。分数接近时需要结合成本、失败模式与选择过程判断,不能只按均值第三位小数排出确定优劣。
报告搜索空间、主指标、失败运行和最终测试使用情况,防止只展示最好结果。环境与依赖版本会影响复现,训练与评分耗时还受硬件、并行和缓存影响,应说明可比较范围。
数学表达
核心表达
记录数据版本、Pipeline 边界、超参数空间、软件版本和最终测试使用次数。
变量含义
变量定义与本页概念定义一致,代码中的同名变量保持相同语义。
计算步骤
- 1记录划分
- 2列每折分数
- 3计算均值/样本标准差
- 4记录耗时
代码对应位置
示例 1明确区分均值与折间样本标准差:只汇总明确给定的教学分数;ddof=1 对应样本标准差,不附会统计置信水平。
案例:三个构造分数不能直接生成置信区间
假设三折分数为 0.7、0.8、0.9,均值为 0.8,样本标准差为 0.1。可以报告为“折均值 0.8,折间标准差 0.1”,并列出各折样本数与协议。
把 0.8 ± 0.1 叫作 95% 置信区间没有依据。重复 CV 也不让所有折独立;若要推断不确定性,需要明确抽样单位和适合的统计方法。下方数字完全是教学构造,用于核对汇总计算,不是某模型实测表现。
计算与实现步骤
- 记录划分
- 列每折分数
- 计算均值/样本标准差
- 记录耗时
- 记录搜索范围
- 独立测试
- 保存版本
代码实现
示例 1
明确区分均值与折间样本标准差
example_01.py用途:只汇总明确给定的教学分数;ddof=1 对应样本标准差,不附会统计置信水平。
import numpy as np
scores = np.array([0.7, 0.8, 0.9])
assert len(scores) > 1
print("folds:", scores.tolist())
print(f"mean={scores.mean():.3f}")
print(f"sample_std={scores.std(ddof=1):.3f}")
print("interpretation: descriptive fold spread, not a confidence interval")代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
只汇总明确给定的教学分数;ddof=1 对应样本标准差,不附会统计置信水平。
mean- 训练特征逐列均值。
std- 训练特征逐列标准差。
scores- 交叉验证各折的评价分数。
Step 1 · 1–1 行
导入当前步骤需要的数值计算、预处理、模型或评价工具。依赖集中写在代码开头,便于复现。
import numpy as npStep 2 · 3–8 行
只从训练数据逐列计算均值与标准差,对应标准化公式中的 μ 和 σ。
scores = np.array([0.7, 0.8, 0.9])
assert len(scores) > 1
print("folds:", scores.tolist())
print(f"mean={scores.mean():.3f}")
print(f"sample_std={scores.std(ddof=1):.3f}")
print("interpretation: descriptive fold spread, not a confidence interval")代码与数学原理
减去训练均值并除以训练标准差,对应代码中的 mean/std 或 StandardScaler。
预期输出或运行结果
本地 scikit-learn 1.8.0 的核对输出: folds: [0.7, 0.8, 0.9] mean=0.800 sample_std=0.100 interpretation: descriptive fold spread, not a confidence interval
常见错误 · 4 条
- 不要在测试集上调用 fit 或 fit_transform;测试集只能复用训练参数。
- 只报告最高折或最好一次运行,隐去完整分数与失败。
- 把折间标准差当作置信区间,或把重复折当独立样本夸大精度。
- 仅写随机种子,没有数据版本、索引、Pipeline 与搜索记录。
实际应用
- 实验报告
- 模型审查
常见错误
- 只报告最高折或最好一次运行,隐去完整分数与失败。
- 把折间标准差当作置信区间,或把重复折当独立样本夸大精度。
- 仅写随机种子,没有数据版本、索引、Pipeline 与搜索记录。
推荐学习资料
参考库不会生成虚假资源或无效外部链接。