Libsvm的完整安装过程以及如何在Matlab2018a中配置MinGW-w64 C/C++ 编译器
在安装Libsvm的过程中,我遇到了很多问题,参考了这些大神的博客,最终成功安装。在此非常感谢这些人。
以下是我完整的安装过程(本人用的matlab版本是matlab2018a,Win10系统):
总的参考博客:https://blog.****.net/qq_31781741/article/details/82666861
1.官网下载Libsvm安装包
Libsvm官网:https://www.csie.ntu.edu.tw/~cjlin/libsvm/
有一点注意就是下载完后务必要把Libsvm安装包放在当前路径下,然后开始下一步。
2.命令窗口执行mex -setup,找不到编译器需要这一步,自己下载编译器
参考博客:https://blog.****.net/dengxiong_bright/article/details/84101889
安装完成后,命令行输入
%matlab每次运行添加环境变量
setenv('MW_MINGW64_LOC','C:\TDM-GCC-64'),
%或者直接系统添加。
再 mex -setup
3.然后执行命令make,注意执行的时候要在libsvm路径下的matlab文件夹下
然后会发现执行不了,提示你没有编译器。
解决办法,参考博客:
打开当前路径下的libsvm—matlab-make.m文件,把m文件中的四个值替换为COMPFLAGS即可
https://www.ilovematlab.cn/forum.php?mod=viewthread&tid=566442
再执行make,结果如下,安装成功
4.make成功后把生成的四个文件放在matlab安装目录bin下的win64中
参考博客:https://blog.****.net/u012824097/article/details/61195288
5.测试自己是否安装成功Libsvm
按照网上最常见的测试方法,来进行一下测试。
将Libsvm文件下的测试数据集heart_scale复制到Libsvm\matlab下,后续的操作将在该文件夹下进行,同时将MATLAB工作路径转至该文件下(在MATLAB中也可完成文件的复制粘贴工作)。
在命令行窗口输入
[heart_scale_label,heart_scale_inst]=libsvmread('heart_scale');
model = svmtrain(heart_scale_label,heart_scale_inst) ;
[predict_label,accuracy,dec_values] = svmpredict(heart_scale_label,heart_scale_inst,model);
(该行代码也可以只有一个输出值predict_label,看到过一个测试教程里给了双输出值的模式,愣是跑不出来,最后在Libsvm\matlab\README中看见了格式,在此希望新手们仔细阅读Libsvm\README 和Libsvm\matlab\README,前者介绍svm的命令,后者介绍matlab下的语句规范)
即:
[heart_scale_label,heart_scale_inst]=libsvmread('heart_scale');
model = svmtrain(heart_scale_label,heart_scale_inst) ;
[predict_label,accuracy,dec_values] = svmpredict(heart_scale_label,heart_scale_inst,model);
*
结果:
optimization finished, #iter = 162
nu = 0.431029
obj = -100.877288, rho = 0.424462
nSV = 132, nBSV = 107
Total nSV = 132
Accuracy = 86.6667% (234/270) (classification)
>>