在MATLAB中,我们如何使用分区模型进行分类或回归?

时间:2017-08-17 15:26:25

标签: matlab cross-validation

似乎交叉验证的模型不能与 predict 函数一起使用。如何使用带有测试集的模型?例如:

ens = fitcecoc(X, T, 'KFold', 10)

直接使用 predict 函数会抛出错误,MATLAB文档解释了为什么它非常well ens 是一个具有10个不同分类器的分区模型。我们应该使用每个分类器运行 predict ,然后使用具有最大协议的类吗?

1 个答案:

答案 0 :(得分:0)

其他几个类似的问题没有得到答案,所以我想我会用我找到的解决方案回答我自己的问题。 MATLAB K-Fold交叉验证产生K个不同的分类器或回归器。它们是通过保留部分数据生成的(保持操作是随机的,因此如果您有不平衡的数据集 - 请小心)。为了预测输出类,您可以迭代所有训练过的K模型并使用模式来获得准确的类。

cv_Ensemble = crossval(Ensemble_Model, 'KFold', 10);

classIdx = zeros(N, length(cv_Ensemble .Trained));

for p = 1:length(cv_Ensemble .Trained)
      [temp, ~] = predict(cv_Ensemble.Trained{p}, Data_f);
      classIdx(:, p) = temp;
end

classIdx = mode(classIdx, 2)