快捷搜索: 王者荣耀 脱发

matlab--交叉验证函数crossvalind

crossvalind

参考博客:

load fisheriris
 indices = crossvalind(Kfold,species,10);
 cp = classperf(species);
 for i = 1:10
    test = (indices == i); 
    train = ~test;
    class = classify(meas(test,:),meas(train,:),species(train,:));
    classperf(cp,class,test);
end
 cp.ErrorRate

下面逐行讲解一下: 首先load fisheriris将数据集载入,可以得到meas和indices两个数据集,分别为原始的数据集和他们的标签。 可以看到数据集有150个样本,每一行是一个样本数据。 接着用交叉验证函数做十次交叉验证,将标签均分成十份,每一份打上不同的记号,记号为一个正整数。

indices = crossvalind(‘Kfold’,species,10);

可以得到150个数被不同的数打标签,同样的数就是一份,一共是十份,每一份有15个数。 接着,对标签集进行分析,可以参考

cp = classperf(species);

接下来这段代码就好理解了,十次循环,每一次取其中一份作为测试集,其余的做训练集,使用classify最近邻方法进行分类,并评估错误率。

for i = 1:10
    test = (indices == i); 
    train = ~test;
    class = classify(meas(test,:),meas(train,:),species(train,:));
    classperf(cp,class,test);
end
cp.ErrorRate

取其中的i=1的情况,分别看下得到的结果:

关于classify函数的解释

经验分享 程序员 微信小程序 职场和发展