matlab - 如何在 matlab 中选择交叉验证中的最佳模型?
问题描述
我有两个数据集,我想fitcsvm
通过其中一个训练一个 SVM 分类模型 ( ),然后预测另一个的标签。我使用 10 倍交叉验证 ( crossval
) 来训练我的模型,所以我有 10 个不同的模型。我的问题是这些模型中的哪一个最适合预测,我怎样才能找到它?这是我的代码:
Mdl = fitcsvm(trainingData,labels);
CVMdl = crossval(Mdl);
解决方案
你可能在这里混淆了一些东西。该函数fitcsvm
训练单个模型,并且该函数crossval
验证该单个模型。然后它将返回一个评估值。
通常,您不能通过交叉验证来训练模型(正如它所说,这是一种验证技术)。但是,您可以使用交叉验证来训练好的模型。
您正在寻找的是一种超参数优化。这些方法可以在给定数据集上自动训练多个模型,以找到 SVM 的最佳调整值。看看这里的文档
你可以像这样打开它
Mdl = fitcsvm(trainingData,labels,'OptimizeHyperparameters','auto')
您可能想使用交叉验证来训练具有相同调整参数的多个模型,但我想,您必须自己编写。也许这已经对您有所帮助。
推荐阅读
- html - 使用 vba 在 html 的自动完成下拉列表中选择一个项目
- java - 如何单击 id 在页面刷新时不断变化的日期选择器
- spring-boot - 上游连接错误或在标头之前断开/重置。重置原因:使用 Spring Boot 时连接终止
- sockets - websockex:使用 CRLF json 协议连接 ssl 套接字时出错
- python - 蟒蛇 | 使用子类对象从父类访问变量是否比从子类访问相同变量慢?
- java - 为什么自定义@Exclude 不从序列化中排除字段
- mailgun - 通过 Mailgun 向手机发送电子邮件不起作用
- excel - 数字格式在 VBA 中无法正常工作
- node.js - 生产服务器上 docker 环境中的 Node.js 内存泄漏
- c# - 如何实例化一个类?