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