使用线性判别分析进行交叉验证

时间:2017-02-17 04:05:04

标签: matlab cross-validation

以下代码使用线性判别分析执行10次交叉验证:

load fisheriris
indices = crossvalind('Kfold',species,10);
cp = classperf(species); % initializes the CP object

for i = 1:10
    test = (indices == i); train = ~test;
    class = classify(meas(test),meas(train),species(train));
    % updates the CP object with the current classification results
    classperf(cp,class,test)  
end

cp.CorrectRate

如何修改为使用fitcdiscr而不是第7行的分类?当我尝试时,我得到一个错误(错误的参数数量)。我不知道需要什么论点。

1 个答案:

答案 0 :(得分:1)

fitcdiscr使用真实标签返回基于训练数据的模型。因此,为了获得预测类(类),我们需要使用模型方法预测。

load fisheriris 
indices = crossvalind('Kfold',species,10);
cp = classperf(species);
for i = 1:10
    test = (indices == i); train = ~test;
    Mdl = fitcdiscr(meas(train,:), species(train,:));
    class = Mdl.predict(meas(test,:));
    classperf(cp,class,test);
end
cp.CorrectRate

我使用旧函数(classify)对此进行了测试,并且CorrectRate是相同的。