最近在做一个图片分类项目,想用lvbsvm跑一下,结果安装lvbsvm遇到了个坑,特来总结一下。
下载lvbsvm
https://www.csie.ntu.edu.tw/~cjlin/libsvm/oldfiles/
一般是下载最新版本
将下载的lvbsvm解压在matlab的toolbox下,如C:\Program Files\MATLAB\R2017a\toolbox
打开matlab,将libsvm-3.23\matlab 添加到路径,比如将:\MATLAB\R2017a\toolbox\libsvm-3.23\matlab 添加到路径。
在命令窗口输入 mex setup
如果提示没有编辑器,就去安装MinGW64 Compiler
http://tdm-gcc.tdragon.net/download
默认安装
安装完之后,
打开Matlab中,进入LIBSVM根目录下的matlab目录(如\MATLAB\R2017a\toolbox\libsvm-3.23),在命令窗口的输入mex -setup 输出为:
MEX 配置为使用 'Microsoft Windows SDK 7.1 (C)' 以进行 C 语言编译。 Warning: The MATLAB C and Fortran API has changed to support MATLAB variables with more than 2^32-1 elements. In the near future you will be required to update your code to utilize the new API. You can find more information about this at: http://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html. 要选择不同的语言,请从以下选项中选择一种命令: mex -setup C++ mex -setup FORTRAN
然后在命令窗口输入make,如果报错就将make.m里面的CFLAGS
改成COMPFLAGS
再次输入make,就会出现
使用 'Microsoft Windows SDK 7.1 (C)' 编译。 MEX 已成功完成。 使用 'Microsoft Windows SDK 7.1 (C)' 编译。 MEX 已成功完成。
测试
[heart_scale_label, heart_scale_inst] = libsvmread('C:\Program Files\MATLAB\R2017a\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);
命令窗口出现:
optimization finished, #iter = 134
nu = 0.433785
obj = -101.855060, rho = 0.426412
nSV = 130, nBSV = 107
Total nSV = 130
Accuracy = 86.6667% (234/270) (classification)
说明安装成功。