如何在 matlab 交叉验证中选择最佳模型?

How can I choose the best model in cross validation in matlab?

我有两个数据集,我想用其中一个训练 SVM 分类模型 (fitcsvm),然后预测另一个的标签。我使用 10 折交叉验证 (crossval) 来训练我的模型,所以我有 10 个不同的模型。我的问题是这些模型中哪一个最适合预测,我如何找到它? 这是我的代码:

Mdl = fitcsvm(trainingData,labels);
CVMdl = crossval(Mdl);  

你可能搞错了。函数 fitcsvm trains a single model and the function crossval 验证了这个单一模型。然后它将return一个评估值。

一般来说,您不能通过cross-validation训练模型(正如它所说,这是一种验证技术)。但是,您可以使用 cross-validation 来训练好的模型。

您正在寻找的是一种 hyperparameter optimization. Those are methods that automatically train multiple models on a given data set to find the best tuning values for the SVM. Have a look at the docs here

你可以这样开启

Mdl = fitcsvm(trainingData,labels,'OptimizeHyperparameters','auto')

您可能想使用 cross-validation 来训练具有相同调整参数的多个模型,但我想,您必须自己编写。也许这已经对您有所帮助。