交叉驗證的優點:
原始采用的train_test_split方法,數據劃分具有偶然性;交叉驗證通過多次劃分,大大降低了這種由一次隨機劃分帶來的偶然性,同時通過多次劃分,多次訓練,模型也能遇到各種各樣的數據,從而提高其泛化能力
與原始的train_test_split相比,對數據的使用效率更高,train_test_split,默認訓練集,測試集比例為3:1,而對交叉驗證來說,如果是5折交叉驗證,訓練集比測試集為4:1;10折交叉驗證訓練集比測試集為9:1.數據量越大,模型準確率越高!
交叉驗證的缺點:
這種簡答的交叉驗證方式,從上面的圖片可以看出來,每次劃分時對數據進行均分,設想一下,會不會存在一種情況:數據集有5類,抽取出來的也正好是按照類別劃分的5類,也就是說第一折全是0類,第二折全是1類,等等;這樣的結果就會導致,模型訓練時。沒有學習到測試集中數據的特點,從而導致模型得分很低,甚至為0,為避免這種情況,又出現了其他的各種交叉驗證方式。
Stratifidk-foldcrossvalidation
分層交叉驗證(Stratifiedk-foldcrossvalidation):首先它屬于交叉驗證類型,分層的意思是說在每一折中都保持著原始數據中各個類別的比例關系,比如說:原始數據有3類,比例為1:2:1,采用3折分層交叉驗證,那么劃分的3折中,每一折中的數據類別保持著1:2:1的比例,這樣的驗證結果更加可信。
通常情況下,可以設置cv參數來控制幾折,但是我們希望對其劃分等加以控制,所以出現了KFold,KFold控制劃分折,可以控制劃分折的數目,是否打亂順序等,可以賦值給cv,用來控制劃分。
以上內容為大家介紹了python交叉驗證,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。