python sklearn包——3.1cross validation筆記

preface:做實驗少不了交叉驗證,平時常用from sklearn.cross_validation import train_test_split,用train_test_split()函數將數據集分爲訓練集和測試集,但這樣還不夠。當需要調試參數的時候便要用到K-fold。scikit給我們提供了函數,我們只需要調用即可。

sklearn包中cross validation的介紹:在這裏。其中滷煮對3.1.2. cross validation iterators這一小節比較注意。先做這一小節的筆記,後續再添加。cross_validation函數下的函數如下圖所示。


Figure 1: cross validation下的函數

3.1.2.1. k-fold

將樣例劃分爲K份,若K=len(樣例),即爲留一交叉驗證,K-1份作爲訓練。從sklearn中自帶的KFold函數說明中也可以看到其用法。其中n_folds默認爲3折交叉驗證,2/3作爲訓練集,1/3作爲測試集。


Figure 3-1-2-1-1:KFold用法



Figure 3-1-2-1-2: KFold使用例子


3.1.2.2. Stratified k-fold

StratifiedKFold()這個函數較常用,比KFold的優勢在於將k折數據按照百分比劃分數據集,每個類別百分比在訓練集和測試集中都是一樣,這樣能保證不會有某個類別的數據在訓練集中而測試集中沒有這種情況,同樣不會在訓練集中沒有全在測試集中,這樣會導致結果糟糕透頂。


Figure 3-1-2-2-1:StratifiedKFold函數使用

3.1.2.3. Label k-fold

LabelKFold()函數則是根據樣例label來交叉驗證,某個樣例的數據必須是屬於訓練集或者測試集時,可用這個函數。奇怪的是滷煮在sklearn中使用異常,沒有這個函數。。。


Figure 3-1-2-3:LabelKFold()函數使用


其他函數沒怎麼用上,也就暫時不花費時間整理。


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