Matlab代码提示“svmtrain已删除 请改用fitcsvm”,以及svmpredict没有返回结果label和精度accuracy的解决办法

Matlab在运行SVM相关函数时,如果显示“svmtrain已删除 请改用fitcsvm”,则表示高版本的Matlab已经采用fitcsvm函数替代了旧版本中svmtrain函数,则可以使用新的fitcsvm函数,也可以添加包libsvm后,使用svmtrain函数。

如果想继续使用svmtrain函数,请按照一下操作添加包libsvm。

第一步

打开链接,下载libsvm包。链接:LIBSVM——支持向量机库
在这里插入图片描述

第二步

1、下载之后就解压得到libsvm文件,并将这个文件拷贝到自己的Matlab安装路径中的toolbox文件里。
2、打开Matlab,在工具栏找到“设置路径”。如下图在这里插入图片描述
在这里插入图片描述
3、点击添加并包含子文件夹后,选择toolbox文件里的libsvm-3.24包下的matlab文件夹,添加完成后在上图右侧路径框里将显示刚添加的路径,最后选择保存并关闭。

切记要先保存后,再关闭对话框。

第三步

打开上面的libsvm文件下的matlab文件夹,在matlab命令行窗口执行:

mex -setup

若报错,则需要下载编译器,并安装,安装路径不能有中文。
下载并安装编译器:Visual Studio 2017安装教程,链接:http://xinzhi.wenda.so.com/a/1523889942614236

安装和调试完成后,再次在matlab命令行窗口执行:

mex -setup

在这里插入图片描述
“MEX”完成后,在matlab命令行窗口执行make。

make

“make"成果后,运行自己的代码就可以了。

其他

如果在使用svm过程中,发现用svm预测的时候,没有返回预测结果label和预测精度accuracy,这是因为libsvm的版本问题,如果我们使用的是以前老的版本,比如2.几的svm,大部分是要求我们输入两个参数就可以。如下:

[predict_label,accuracy] = svmpredict(test_label,Test_matrix,model);

但是如果我们使用比较新的libsvm版本后,比如3.2,如果还是使用两个作为输出参数,则该命令在新的libsvm版本中是没有输出结果的,也就是都返回时空值。
那么就需要将输出写成3个输出参数即可,具体代码如下修改。

[predict_label,accuracy,preb] = svmpredict(test_label,Test_matrix,model);

按照以上步骤修改好后,就可以在新的libsvm版本中使用svmtrain函数和svmpredict函数啦。

  • 26
    点赞
  • 117
    收藏
    觉得还不错? 一键收藏
  • 28
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值