如何解决如何在Matlab中进行交叉验证时选择最佳模型?
我有两个数据集,我想通过其中一个训练SVM分类模型(fitcsvm
),然后为另一个模型预测标签。我使用10倍交叉验证(crossval
)来训练模型,所以我有10种不同的模型。我的问题是,这些模型中的哪一个最适合预测,如何找到它?
这是我的代码:
Mdl = fitcsvm(trainingData,labels);
CVMdl = crossval(Mdl);
解决方法
您可能在这里混淆了一些东西。函数fitcsvm
训练单个模型,函数crossval
验证该单个模型。然后它将返回一个评估值。
通常,您不能通过交叉验证训练模型(正如它所说的,这是一种验证技术)。但是,您可以使用交叉验证来训练好的模型。
您正在寻找的是一种hyperparameter optimization。这些方法可以在给定的数据集上自动训练多个模型,以找到SVM的最佳调整值。看看文档here
您可以像这样打开它
Mdl = fitcsvm(trainingData,labels,'OptimizeHyperparameters','auto')
您可能想使用交叉验证来训练具有相同调整参数的多个模型,但是我想,您必须自己编写此模型。也许这已经对您有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。