K折交叉验证

xiaoxiao2021-02-28  74

留坑学习

交叉验证:在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本刚建立的模型进行预测,并这小部分样本的预测误差记录它们的(平方加和),把每个样本的预测(误差平方)加和。

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)

 

转载请注明原文地址: https://www.6miu.com/read-1950117.html

最新回复(0)