如何在 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 来训练具有相同调整参数的多个模型,但我想,您必须自己编写。也许这已经对您有所帮助。
我有两个数据集,我想用其中一个训练 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 来训练具有相同调整参数的多个模型,但我想,您必须自己编写。也许这已经对您有所帮助。