如何在matlab里安装libsvm包

欢迎使用libsvm

下载libsvm

首先是要到张志忠、林志仁的官网下载最新版本的libsvm-3.23, 发布于 July 15, 2018.。官网https://www.csie.ntu.edu.tw/~cjlin/libsvm/
下载完,解压到matlab安装路径下的 toolbox下——D:\MATLAB\R2018A\toolbox\下,并设置路径,参考https://blog.csdn.net/weixin_39970417/article/details/80567715
和https://www.cnblogs.com/Ran-Chen/p/9462825.html

在这里插入图片描述
当然这个英文看得有点难受,我为大家准备了修改好的压缩包,包括libsvm包,官方指南和编译器,也就是说下了这个后面只要下载编译器,把libsvm包解压到tools设置下路径,执行make.m就可以用了。
链接:https://download.csdn.net/download/weixin_43332451/11149212

下载编译器

libsvm用C写的,没有编译器根本读不了。这里下的是matlab官网的编译器,其他编译器也行。
https://ww2.mathworks.cn/matlabcentral/fileexchange/52848-matlab-support-for-mingw-w64-c-c-compiler
登录后点Download

据说TDM-GCC编译器也行
https://blog.csdn.net/qq_31781741/article/details/82666861

进入libsvm目录

E:\MATLAB22\toolbox\libsvm-3.23\matlab(一定要进入matlab!!)
反正你点开“make.m”然后在命令行进行操作就行

修改make.m文件

make.m文本中的CFLAGS 替换成COMPFLAGS,原因是matlab自带的用的不在是C语言(CFLAGS),而是C++(COMPFLAGS),但是C++编译器也可以读C。
参考来自:https://github.com/cjlin1/libsvm/issues/55
在这里插入图片描述
在这里插入图片描述
没改就会报错:error: -fexceptions: No such file or directory

修改函数名

matlab有自带的svm函数,设置重名就会出现问题。
.为了避免命名冲突svmpredict和svmtrain文件都要改名为,libsvmpredict和libsvmtrain
``当然make里面的文件名也要一起改。
在这里插入图片描述
还是弄个全文替换比较好
参见:https://blog.csdn.net/qq_42183184/article/details/86598104

激活编译器

在命令窗口的输入mex -setup,选择 mex -setup C++
在这里插入图片描述

执行 make.m文件

注意在E:\MATLAB22\toolbox\libsvm-3.23\matlab 进行,否则找不到呀,或者你直接执行make.m文件好了
在这里插入图片描述
编译好一次,以后应该不用再编译了

测试libsvm的matlab工具箱是否可用

load  heart_scale;
model = libsvmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 0.07');
[predict_label, accuracy, dec_values] = libsvmpredict(heart_scale_label, heart_scale_inst, model);`

修改自https://www.cnblogs.com/datavis/p/6035217.html
结果返回出现这段话,就成功了
在这里插入图片描述

问题是3.2.3版本不一定提供了mat文件,只有一个米有后缀名的heart_scale文件,而且像下面这样打开是不行的。
[heart_scale_label, heart_scale_inst] = libsvmread(‘heart_scale’);
括号里要写明heart_scale所在的路径![heart_scale_label,heart_scale_inst]=libsvmread(‘E:\MATLAB\R2018a\toolbox\libsvm-3.23\heart_scale’);
`参考来自:https://blog.csdn.net/weixin_43358444/article/details/84109915

[heart_scale_label,heart_scale_inst]=libsvmread('E:\MATLAB\R2018a\toolbox\libsvm-3.23\heart_scale');
 model = libsvmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 0.07');
 [predict_label, accuracy, dec_values] = libsvmpredict(heart_scale_label, heart_scale_inst, model);`
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值