LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数可以解决很多问题;并提供了交互检验(Cross Validation)的功能。
官方网站:http://www.csie.ntu.edu.tw/~cjlin/libsvm/
最近版本可以在上述官方网站中下载,也可以去他们的官方Github项目页去下载。如果网络不畅通,我也上传了3.21版本到百度云,自行下载(链接:http://pan.baidu.com/s/1cLrsFO 密码:h9zx)。
由于在64位的matlab R2015b下使用mex -setup
编译会报以下异常:
MEX 配置为使用 'Microsoft Visual C++ 2013 Professional (C)' 以进行 C 语言编译。 警告: MATLAB C 和 Fortran API 已更改,现可支持 包含 2^32-1 个以上元素的 MATLAB 变量。不久以后, 您需要更新代码以利用 新的 API。您可以在以下网址找到相关详细信息: http://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html。 要选择不同的语言,请从以下选项中选择一种命令: mex -setup C++ mex -setup FORTRAN
后来发现可以依照libsvm提供的最原始办法make
命令可以解决。
具体步骤如下:
1、下载最新版的libsvm,目前最新版本为3.21;
2、解压libsvm,建议放在matlab程序目录下的toolbox
文件夹,具体位置看个人喜好;
3、在matlab中设置路径,添加并包含子文件夹,将libsvm整个文件夹都加载进去;
4、切换matlab运行目录至:D:\Program Files\MATLAB\R2015b\toolbox\libsvm\matlab
(这个路径只是在我电脑上的路径),在命令行输入make,也就是该目录下的那个make文件。这时候会自动make出来很多文件,会看到make出带有mexm64后缀名的文件,这就成功了。
5、将第4步make出来的文件复制粘贴到D:\Program Files\MATLAB\R2015b\toolbox\libsvm\windows
(即上级目录下的windows文件夹)下,覆盖掉原有的文件。
6、验证是否能够正常运行。使用libsvm数据测试,可以到官方网站里面的数据集下载测试数据(https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary.html#heart),也可以直接下载整理后的数据,里面也有数据的一些说明(下载地址:http://pan.baidu.com/s/1eSdPLcQ 密码:g42u):
加载上述压缩包中的heart_scale
数据,在matlab中执行下述libsvm工具箱特有的语句:
model = svmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 0.07'); [predict_label, accuracy, dec_values] = svmpredict(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)
即说明libsvm安装成功。
1 条评论
文章很好,谢谢分享。