MATLAB中使用libsvm

最近正在学习机器学习算法SVM,然后需要用到libsvm库,于是整理了下自己配置的大致过程。自己的平台环境:win10 MATLAB 2017b libsvm 3.22


1 . 下载libsvm。
  并将其拷贝到MATLAB安装目录下的toolbox目录下。
例如我的是:C:\Program Files\MATLAB\R2017b\toolbox\
下载地址:http://www.csie.ntu.edu.tw/~cjlin/libsvm/#download

2 . 下载 MinGW-w64 C/C++ 编译器。
  自己使用的是matlab2017工具平台,然而libsvm是使用C++开发的,这样我们就需要先使用C++的编译工具,将libsvm编译成matlab能直接使用的文件,于是就按照matlab官网的提示安装了MinGW-w64 C/C++ compiler 这个编译器。因为从matlab官网安装的一直会下不下来,自己就独立安装了 tdm64-gcc-4.9.2.exe [下载链接]
安装好后,最好配置一下环境变量,方便matlab查找已安装的编译器。
如:安装目录为:C:\TDM-GCC-64
  添加系统环境变量:变量名 MW_MINGW64_LOC 目录为安装目录 C:\TDM-GCC-64
  然后在matlab中运行:setenv('MW_MINGW64_LOC','C:\TDM-GCC-64')
这样编译器的环境就配好了。

3 . 然后在matlab命令行输入:mex -setup 会提示 MEX配置使用 MinGW-w64 C/C++ compiler 编译器,并伴有一个警告,但不影响。
这里写图片描述

4 . 然后cd 到C:\Program Files\MATLAB\R2017b\toolbox\libsvm-3.22\matlab目录,输入命令:make 会报一个错误,如下:
这里写图片描述
  提示用户权限不够,因此,我们可以先将libsvm-3.22文件夹,在别的盘(如D盘)编译好,再复制到C盘下MATLAB的安装目录C:\Program Files\MATLAB\R2017b\toolbox\ 之中。

这里写图片描述

  这里因为开始不知道可以在别的盘直接用 MinGW-w64 C/C++编译好,于是就下了visual studio 2017,然后用Microsoft Visual C++ 2017 编译的,如上。其实可以直接用MinGW-w64 C/C++编译是一样的。编译好你会看到目录下多了4个.mexw64格式的文件:
这里写图片描述

注意:这里使用用 visual studio 编译时,需要查看官网MATLAB能够使用对应版本的visual studio,或者其他工具.
如:matlab 2017 b —— visual studio 2017, 而matlab 2017 a 却不能使用 visual studio 2017 编译。

因此,建议大家直接下载 tdm64-gcc-4.9.2.exe 单独安装文件,并在别的盘先编译好,然后再拷贝到matlab的安装目录之中。

5 .测试libsvm库
  在libsvm-3.22目录下有一个hear_scale 数据文件,我们可以通过使用libsvmread()函数将其转化成matlab格式,然后再进行相应的操作。

>>[heart_scale_label,heart_scale_inst]=libsvmread('heart_scale');
>> 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

>> [predict_label, accuracy, dec_values] = svmpredict(heart_scale_label, heart_scale_inst, model);  % test the trainingdat

Accuracy = 86.6667% (234/270) (classification)

看到这样的结果,就说明你可以在matlab中使用SVM了。

参考博客:
http://apinetree.blog.51cto.com/714152/1560254
http://blog.csdn.net/buaasuozi/article/details/50781615
http://blog.csdn.net/desire121/article/details/60466845#insertcode

猜你喜欢

转载自blog.csdn.net/forever__1234/article/details/78148108