#1. 前言 之前在win10系统matlab64环境下环安装libsvm工具箱安装了好久都没有成功,今天通过阅读牛人的一些博客,终于配置成功并且可以顺利使用,所以特写博客分享之。 #2. 工具准备 所需要安装的软件:matlab R2014a , SDK7.1(GRMSDKX_EN_DVD),VC-Compiler-KB2519277 matlab安装这里就不再具体介绍了。 SDK7.1和VC-Compiler的下载地址为: 链接:https://pan.baidu.com/s/1bpYKsA7 密码:57ri 分别安装以上两个软件。 #3. libsvm工具箱安装 ##3.1 libsvm下载 这里下载最新版本的libsvm3.22,下载地址如下:https://www.csie.ntu.edu.tw/~cjlin/libsvm/ 将下载后的libsvm解压并放到matlab的子目录toolbox下,即D:\Program Files\MATLAB\R2014a\toolbox。 ##3.2 设置路径 打开matlab主界面,点击“设置路径”,选择“添加并包含子文件夹”,添加解压的libsvm路径D:\Program Files\MATLAB\R2014a\toolbox\libsvm-3.22。 ##3.3 生成系列文件 将当前matlab的工作路径设为D:\Program Files\MATLAB\R2014a\toolbox\libsvm-3.22\matllab 在命令行窗口键入如下命令:
>> 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
>> mex -setup C++
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.
>> make
使用 'Microsoft Windows SDK 7.1 (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Windows SDK 7.1 (C)' 编译。
MEX 已成功完成。
使用 'Microsoft Windows SDK 7.1 (C++)' 编译。
找不到 D:\Program Files\MATLAB\R2014a\toolbox\libsvm-3.22\matlab\svmtrain.exp
找不到 D:\Program Files\MATLAB\R2014a\toolbox\libsvm-3.22\matlab\svmtrain.exp
MEX 已成功完成。
使用 'Microsoft Windows SDK 7.1 (C++)' 编译。
找不到 D:\Program Files\MATLAB\R2014a\toolbox\libsvm-3.22\matlab\svmpredict.exp
找不到 D:\Program Files\MATLAB\R2014a\toolbox\libsvm-3.22\matlab\svmpredict.exp
MEX 已成功完成。
此时,在会自动make出来很多文件,不用管,主要是会看到make出带有mexw64后缀名的文件,这就成功了。 #4. 测试 ##4.1 键入load heart_scale 输入以下命令:
>> load heart_scale
错误使用 load
ASCII 文件 heart_scale 的第 3 行中的列数必须与前面行中的列数相同。
此时是因为安装包中的数据存在问题,下载新的数据,下载地址如下: 链接:https://pan.baidu.com/s/1nw38byT 密码:fpuk 并且用下载的数据覆盖安装包中的数据。 ##4.2 训练模型
>> model=svmtrain(heart_scale_label,heart_scale_inst,'-c 1 -g 0.07')
*
optimization finished, #iter = 134
nu = 0.433785
obj = -101.855060, rho = 0.426412
nSV = 130, nBSV = 107
Total nSV = 130
model =
Parameters: [5x1 double]
nr_class: 2
totalSV: 130
rho: 0.4264
Label: [2x1 double]
sv_indices: [130x1 double]
ProbA: []
ProbB: []
nSV: [2x1 double]
sv_coef: [130x1 double]
SVs: [130x13 double]
##4.3 分类预测
[predict_label,accuracy,dec_values]=svmpredict(heart_scale_label,heart_scale_inst,model)
Accuracy = 86.6667% (234/270) (classification)
predict_label =
1
-1
-1
1
...
accuracy =
86.6667
0.5333
0.5326
dec_values =
1.2258
-0.3213
-0.7609
1.4504
-1.0003
-0.1669
...