这次需要介绍的是scikit-learn库里面的几种常见的交叉验证方式: 1) LeavePOut, 2) LeaveOneOut, 3) KFold, 4) Stratified KFold
其实归并起来,主要是两种,KFold和LeavePOut
先讲KFold,
sklearn.cross_validation.KFold(n, n_folds=3, shuffle=False, random_state=None)
KFold的意思是,将数据随机切分成K份,其中留一份给验证集,剩下的K-1份给训练集。 每次切分都可以创建一个训练集,一个验证集。一共切分K次。
参数: n是总数据量,n_folds是切的分数。shuffle是指每次随机切的时候,数据本身是不是也要重排序以下(就像我随机抽扑克牌的时候,抽牌是随机的,但是在抽的时候还要不要进行洗牌这个操作),而random_state就是洗牌的随机方式的选择。
举个栗子
import sklearn.cross_validation as cross_valid
kf=cross_valid.KFold(6,3) #数据量是6个,一共切3份。
for train_index, test_index in kf:
print train_index,test_index
输出结果
[2 3 4 5] [0 1]
[0 1 4 5] [2 3]
[0 1 2 3] [4 5] #可以看到KFold切分了三次,其实按照KFold随机切分的方法,他可以切出超出K种的数据集,但是KFol