SKLEARN模型选择
數據集劃分方法
K折交叉驗證法
留一法
假設有N個樣本,將每一個樣本作為測試樣本,其它N-1個樣本作為訓練樣本,這樣得到N個分類器,N個測試結果。用這N個結果的平均值來測量模型的性能
如果LOD與K-fold—CV比較,LOD在N個樣本上建立N個模型而不是k個,更進一步,N個模型的每一個都是在N-1個樣本上訓練的,而不是(k-1)n/k。兩種方法中,假定k不是很大,且k<<N.LOD比k-fold-cv更加耗時
留p法驗證
有N個樣本,將每p個樣本作為測試樣本,其它N-p個樣本作為訓練樣本,這樣得到(n p)個分類器,不像其他p>1,會發生數據重疊。
隨機劃分法
Shuffle Split迭代器 產生指定數量 獨立的train/test數據集劃分。首先對樣本全體隨機打亂,然后再劃分train/test對
可以使得隨機種子random_test來控制隨機數序列產生器是的運算結果可重現
Shuffle Split是Kfold交叉驗證的比較好的替代,它允許更好的控制迭代次數和train/test樣本比例
StratifiedShuffle Split 是Shuffle Split的一個變體,返回分層劃分,也就是在創建劃分的時候要保證每個劃分中類的樣本比例與整體數據集中的原始比例保持一致
超參數優化方法
學習器模型中一般有兩個參數:一類參數可以從數據中學習可以估計得到,還有一類參數無法從數據中估計,只能靠人的經驗進行設計指定。后一類參數叫超參數
比如:支持向量機中C Kernel gama 樸素貝葉斯里的alpha等
在學習器模型設計中,我們要搜索超參數空間的學習器模型找到最合理的超參數
通過此方法獲得學習器模型參數列表和當前取值:
estimator.get_params().
有些學習器模型有自己的獨特的參數優化方法
SKLEARN提供兩種參數優化方法:網絡搜索與隨機采樣
網格搜索交叉驗證:以窮舉方式遍歷所有可能的參數組合
隨機采樣交叉驗證:依據某種分布對參數空間采樣,隨機得到一些參數組合方案
網格式搜索超參數優化方法
隨機采樣式超參數優化方法
超參數空間搜索技巧
技巧一:指定一個合適的目標測度對模型進行評估
默認情況下,參數搜索使用estimator的score函數來評估模型在某種參數配置下的性能
分類器對應于:sklearn.metrics.accuracy_score
回歸器對應于sklearn.metrics.r2_score
但是在某些應用中,其他評分函數或許更加的合適。(比如,在非平衡的分類問題中,準確率accuracy_score通常不管用。這時我們可以通過參數scoring來指定GridSearchCV類或者RandomizedSearchCV類內部我們自己定義評分函數
技巧二:
使用sklearn的PipLine將estimator和他們的參數空間組合起來
技巧三:
合理劃分數據集,開發集(用于GridSearchCV)+測試集(Test)使用model_selection.train_test_split()
技巧四:
并行化(GridSearchCV)和(RandomizedSearchCV)在參數點的計算上可以做到并行運算,用n_jobs來指定
技巧五:
提高到某些參數節點發生錯誤的魯棒性:再出錯節點提示警告,設置參數error_score=0搞定
模型驗證方法
1.交叉驗證計算得分
2.每個輸入數據點交叉驗證估計
3計算并繪制模型的學習率曲線
學習率曲線:
計算指定的學習器模型在不同大小的訓練集上經過交叉驗證的訓練得分和測試得分
首先,用一個交叉驗證生成器劃分整體數據集k次,每一次劃分都有一個訓練集和測試集,然后從第k次的訓練集中拿出若干個數量不斷增加的子集,在這些子訓練集上訓練模型,然后再計算模型在對應的子訓練集和測試集上的得分。最后,對于每種子訓練集大小下,將k次訓練得分和測試集得分分別進行平均
sklearn模型預測性能的評估方法
estimator對象的score方法
交叉驗證中使用scoring參數
總結
以上是生活随笔為你收集整理的SKLEARN模型选择的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式_4_原型模式(对象的拷贝)
- 下一篇: sql 账号查询一个表查询权限_一个查询