留坑学习
交叉验证:在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预测,并求这小部分样本的预测误差,记录它们的(平方加和),把每个样本的预测(误差平方)加和。
K(5、10)折交叉验证:五折、十折交叉验证最常见。K折交叉验证的过程:
1.将包含m条样本总体分成k个不相交子集S,则每个子集有m/k个样本,S1~S10
2.对每个分类器、学习器:
循环K次:
将Sk用做预测集,其余的用作训练集训练分类器、学习器
将训练的得到的模型用Sk集的特征作为输入得出预测值
记录预测值
根据公式计算本次验证的偏差值或模型得分,记录
取平均值
3.选取误差平均值最低或得分高的分类器、学习器
??验证数低时,所取的训练集与测试集的数量相差不大,误差大·,验证次数高的时候,每次验证的样本不同,可能训练器训练得出模型的参数变化情况会更多。??
用了py的sklearn的model_selection的KFold模块实践一下
from sklearn.model_selection import KFold kf = KFold(n_splits=10) for train,test in kf.split(['A1','A2','A3','A4','A5','A6','A7','A8','A9','A10']): print(train,test)假设A1~A10代表十条样本的数据
kf = KFold(n_splits=10,shuffle=True) **这里需要注意的是,返回的是数组的下标给出伪代码
record=[] for train,test in kf.split(data): result = clf.fit(data[train],data_result[train]).predict(data[test]) record.append(评判公式) np.array(a).mean(axis=0)