K折交叉验证用于模型调优,所有的数据都被用来训练,会导致过拟合,K折交叉验证可以缓解过拟合。
将数据分为k组,每次从训练集中,抽取出k份中的一份数据作为验证集,剩余数据作为测试集。测试结果采用k组数据的平均值。
若训练集较大,则k较小,降低训练成本,若训练集较小,则k较大,增加训练数据。如k=10,则90%的数据被训练;k=20,
留一K折交叉验证,是K折交叉验证的一种特例,每次从数据集中抽取一个数据作为测试数据,一般用于数据集很小的情况。
用python实现K折交叉验证:
from sklearn.model_selection import KFold
kf = KFold(n_splits=10)
for train,valid in kf.split(X_data):
print('train:%s, valid:%s' % (train, valid))