sklearn模型過擬合、欠擬合分析,learning_curve繪製學習曲線

以iris數據集合SVM分類器爲例,使用sklearn的learning_curve函數繪製分類器的學習曲線,並根據學習曲線判斷模型的狀態,是欠擬合還是過擬合。


1、加載iris數據集

2、劃分訓練集和測試集


3、設置超參數C=0.05, gamme=0.1訓練SVM模型

交叉驗證結果準確率0.86,結果好像還不錯!!!

4、使用learning_curve繪製分類器學習曲線

上圖中訓練準確率和驗證準確率同步變化,且準確率沒有太大差距,但是在訓練集上的準確率只有75%左右,表明模型現在可能處於欠擬合的狀態。


5、增加超參數C=10, gamma=1,降低對模型的約束,訓練SVM分類器

修改超參數後,交叉驗證結果95%,說明模型的學習能力變強了,但是現在有可能已經發生了過擬合!!!

6、使用learning_curve繪製分類器學習曲線

學習曲線顯示,隨着訓練集的增大,訓練集上的準確率一直是100%,驗證集的準確率最終穩定在93%左右,模型在訓練集合驗證集上的結果相差較大,可能已經發生了過擬合。


7、設置超參數C=5, gamma=0.1,增強對模型的約束,訓練SVM分類器

現在交叉驗證的結果顯示,在驗證集上的分類準確率爲98%,和第5步一樣,現在也可能發生了過擬合的情況,繪製學習曲線看一下!!!

8、使用learning_curve繪製分類器學習曲線

學習曲線看上去還不錯,分類器在訓練集和驗證集上的準確率最終都穩定到了相當的數值,且和前一步交叉驗證得到的準確率也相當,使用現在這個模型在測試集上試試看!!!


9、模型在測試集上的表現

模型在測試集上的預測準確率在96%,與之前交叉驗證的結果以及學習曲線的最終收斂結果相當,說明模型在未知數據上的泛化效果還不錯!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章