機器學習第十九講:交叉驗證 → 用五次模擬考試驗證真實水平
資料取自《零基礎學機器學習》。
查看總目錄:學習大綱
關于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]《零基礎學機器學習》第八章第三節驗證方法