K折交叉验证,将初始采样(样本集X,Y)分割成K份,一份被保留作为验证模型的数据(test set),其他K-1份用来训练(train set)。交叉验证重复K次,每份验证一次,平均K次的结果或者使用其它结合方式,最终得到一个单一估测。
这个方法的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次,10折交叉验证是最常用的。(切记每次作为验证模型的数据是不同的)。
示例
from sklearn.model_selection import KFold import numpy as np X = np.arange(24).reshape(12,2) y = np.random.choice([1,2],12,p=[0.4,0.6]) kf = KFold(n_splits=5,shuffle=False) for train_index , test_index in kf.split(X): print('train_index:%s , test_index: %s ' %(train_index,test_index))
train_index:[ 3 4 5 6 7 8 9 10 11] , test_index: [0 1 2] train_index:[ 0 1 2 6 7 8 9 10 11] , test_index: [3 4 5] train_index:[ 0 1 2 3 4 5 8 9 10 11] , test_index: [6 7] train_index:[ 0 1 2 3 4 5 6 7 10 11] , test_index: [8 9] train_index:[0 1 2 3 4 5 6 7 8 9] , test_index: [10 11]