机器学习第十九讲:交叉验证 → 用五次模拟考试验证真实水平
机器学习第十九讲:交叉验证 → 用五次模拟考试验证真实水平
资料取自《零基础学机器学习》。
查看总目录:学习大纲
关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南
交叉验证是模型考试的防作弊系统,通过多次划分考卷验证真实能力[^8-2]。通过驾校考试案例详解:
一、核心原理(驾照科目模拟考)
假设驾校有100名学员的考试数据,采用5折交叉验证:
考试流程:
- 将100人分5组(每组20人)
- 4组当题库,1组当考题 → 五轮考试不重复 [参考材料3]
- 最终成绩 = (88%+85%+90%+92%+87%)/5 = 88.4%
类比说明:就像高考前五套模拟卷覆盖全部知识点,比单次考试更客观[^3]
二、操作步骤(心脏病预测案例)
数据集:300例患者数据(200例患病,100例健康)
代码实现:
from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X, y, cv=5)
print("平均准确率:", scores.mean()) # 输出:86.2%
关键优势:避免因单次抽题偏差(如考题全是疑难病例)影响评估[^3]
三、分场景应用(不同考试模式对比)
| 验证方式 | 特点 | 适用场景 | [参考材料3] |
|----------------|---------------------------|-----------------------|
| 简单划分验证 | 快速但成绩波动大 | 大数据集初步筛选 |
| 5折交叉验证 | 均衡效率与准确性 | 中小数据集标准流程 |
| 10折交叉验证 | 更精准但耗时增加10倍 | 精细调参研究 |
案例对比:
- 单次验证成绩:92%(可能抽到简单题)
- 5次交叉验证:88.4%(反映真实水平)
- 实际考试结果:86%(接近交叉验证均值)[^2]
四、注意事项(防止无效验证)
- 数据打乱:需先随机排序,避免时间顺序干扰 [参考材料3]
from sklearn.utils import shuffle X, y = shuffle(X, y, random_state=0)
- 分层抽样:保持正负样本比例相同,如每组保持2:1病患健康比例[^3]
- 避免泄漏:预处理步骤(如标准化)应在每次训练时重新计算[^5]
典型错误:
目录:总目录
上篇文章:机器学习第十八讲:混淆矩阵 → 诊断模型在医疗检查中的误诊情况
[2][3][^5]《零基础学机器学习》第八章第三节验证方法
[^8-2]《零基础学机器学习》第八章第三节验证方法