似乎交叉验证的模型不能与 predict 函数一起使用。如何使用带有测试集的模型?例如:
ens = fitcecoc(X, T, 'KFold', 10)
直接使用 predict 函数会抛出错误,MATLAB文档解释了为什么它非常well。 ens 是一个具有10个不同分类器的分区模型。我们应该使用每个分类器运行 predict ,然后使用具有最大协议的类吗?
答案 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)