最近正在学习机器学习算法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中验证环境
然后在matlab命令行输入:mex -setup
会提示 MEX配置使用 MinGW-w64 C/C++ compiler 编译器,并伴有一个警告,但不影响。
4 . 接着输入命令: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格式,然后再进行相应的操作。
1 | >>[heart_scale_label,heart_scale_inst]=libsvmread('heart_scale'); |
- optimization finished, #iter = 134
nu = 0.433785
obj = -101.855060, rho = 0.426412
nSV = 130, nBSV = 107
Total nSV = 130
1 | >> [predict_label, accuracy, dec_values] = svmpredict(heart_scale_label, heart_scale_inst, model); % test the trainingdat |
Accuracy = 86.6667% (234/270) (classification)
看到这样的结果,就说明你可以在matlab中使用SVM了。