五折交叉验证详细解说
步骤:
step1:将数据集分为5堆;
step2:选取一堆作为测试集,另外四堆作为训练集;
step3:共重复step2 五次,每次选取的训练集不同。
图示:
data | data1 | data2 | data3 | data4 | data5 |
---|---|---|---|---|---|
1 | test | train | train | train | train |
2 | train | test | train | train | train |
3 | train | train | test | train | train |
4 | train | train | train | test | train |
5 | train | train | train | train | test |
matlab实现代码:
clear;clc;
load('Winedata.mat') %红酒数据在UCI数据集中即可下载
nFold = 5;
[n,p] = size(winedata);
c_out = cvpartition(n,'k',nFold);
for k = 1:nFold
Train_dat = winedata(training(c_out,k),:);
Test_dat = winedata(test(c_out,k),:);
end
注:此代码直接运行后,工作空间中显示的是最后一折的数据。若想得到每折数据,则可以设置结点,逐步运行,然后save数据即可;若想在此代码中直接使用每折数据,则在for循环中加入相应使用代码即可。
第一次写文章,欢迎批评指正。