机器学习第十九讲:交叉验证 → 用五次模拟考试验证真实水平

发布于:2025-05-24 ⋅ 阅读:(18) ⋅ 点赞:(0)

机器学习第十九讲:交叉验证 → 用五次模拟考试验证真实水平

资料取自《零基础学机器学习》
查看总目录:学习大纲

关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南


交叉验证是模型考试的防作弊系统,通过多次划分考卷验证真实能力[^8-2]。通过驾校考试案例详解:

一、核心原理(驾照科目模拟考)

假设驾校有100名学员的考试数据,采用5折交叉验证:

总数据集
分5份试卷
轮流出题
成绩取平均

考试流程

  1. 将100人分5组(每组20人)
  2. 4组当题库,1组当考题 → 五轮考试不重复 [参考材料3]
  3. 最终成绩 = (88%+85%+90%+92%+87%)/5 = 88.4%

类比说明:就像高考前五套模拟卷覆盖全部知识点,比单次考试更客观[^3]

二、操作步骤(心脏病预测案例)

数据集:300例患者数据(200例患病,100例健康)

原始数据300例
拆成5份各60例
训练集240例
模型1成绩85%
验证集60例
训练集240例
模型2成绩83%
验证集60例
...
模型5成绩88%

代码实现

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]

四、注意事项(防止无效验证)

  1. 数据打乱:需先随机排序,避免时间顺序干扰 [参考材料3]
    from sklearn.utils import shuffle
    X, y = shuffle(X, y, random_state=0)
    
  2. 分层抽样:保持正负样本比例相同,如每组保持2:1病患健康比例[^3]
  3. 避免泄漏:预处理步骤(如标准化)应在每次训练时重新计算[^5]

典型错误

错误流程
全数据标准化
后分割训练集测试集
分数虚高
正确流程
先分割训练测试
训练集统计
应用到测试集

目录:总目录
上篇文章:机器学习第十八讲:混淆矩阵 → 诊断模型在医疗检查中的误诊情况
下篇文章:机器学习第二十讲:网格搜索 → 像尝试所有密码组合找最佳解锁方式


[2][3][^5]《零基础学机器学习》第八章第三节验证方法
[^8-2]《零基础学机器学习》第八章第三节验证方法


网站公告

今日签到

点亮在社区的每一天
去签到