如何在matlab里安装libsvm包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在matlab里安装libsvm包相关的知识,希望对你有一定的参考价值。

有时我们需要用到SVR(支持向量回归)方法,而 matlab 自带的svm工具箱不能做回归分析,于是有了安装libsvm包的打算。
中间遇到一些困难,比如找不到编译器等等,经过一下午和一晚上的努力,在matlab里可以使用libsvm了。

1.下载好libsvm包

下载libsvm-3.21到随意一个地方,比如到matlab安装路径下的 toolbox下——D:\MATLAB\R2014A\toolbox\下,并解压。

打开matlab,将libsvm-3.21\matlab 添加到路径,比如将:\MATLAB\R2014A\toolbox\libsvm-3.21\matlab 添加到路径。

setup 第一次尝试

若提示没有C++编译器,则根据提示的网址去下载 winsdk_web.exe,然后 双击运行winsdk_web.exe,安装到最后若提示失败,则去卸载自带的visual studio 和 .netframework 4,然后再运行 winsdk_web.exe,提示缺少 .netframework 4,则自行下载安装,反复运行 winsdk_web.exe。

直到运行 winsdk_web.exe 时出现如下图所示情况,说明距成功更近一步了,

2. setup

打开Matlab中,进入LIBSVM根目录下的matlab目录(如D:\MATLAB\R2014A\toolbox\libsvm-3.21),在命令窗口的输入mex -setup 输出为:

>>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.

3.编译

执行 make,输出如下:

>> make
使用 Microsoft Windows SDK 7.1 (C) 编译。
MEX 已成功完成。
使用 Microsoft Windows SDK 7.1 (C) 编译。
MEX 已成功完成。
使用 Microsoft Windows SDK 7.1 (C++) 编译。
找不到 D:\MATLAB\R2014A\toolbox\libsvm-3.21\matlab\svmtrain.exp

找不到 D:\MATLAB\R2014A\toolbox\libsvm-3.21\matlab\svmtrain.exp

MEX 已成功完成。
使用 Microsoft Windows SDK 7.1 (C++) 编译。
找不到 D:\MATLAB\R2014A\toolbox\libsvm-3.21\matlab\svmpredict.exp

找不到 D:\MATLAB\R2014A\toolbox\libsvm-3.21\matlab\svmpredict.exp

MEX 已成功完成。
>> 

4.重命名

忽略错误(找不到……),继续,编译完成后,在当前目录下(libsvm-3.21/matlab下)会出现svmtrain.mexw64、svmpredict.mexw64 或者svmtrain.mexw32、svmpredict.mexw32 ,把文件名svmtrain和svmpredict 相应改成 libsvmtrain 和 libsvmpredict。

这是因为Matlab中自带有SVM的工具箱,其函数名字就是svmtrain和svmpredict,和 libsvm 默认的名字一样.

5.测试是否安装成功libsvm

libsvm 软件包中自带有测试数据,即软件包根目录下的 heart_scale 文件。
在matlab运行代码,输出如下:

>> [heart_scale_label, heart_scale_inst] = libsvmread(heart_scale);
>> model = libsvmtrain(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] = libsvmpredict(heart_scale_label, heart_scale_inst, model);
Accuracy = 86.6667% (234/270) (classification)

 

以上是关于如何在matlab里安装libsvm包的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 LIBSVM Matlab 接口?

如何在Ubuntu里安装Helm

如何在Ubuntu系统里安装Java的最新版本

如何在 Matlab 中使用 libsvm?

从零开始搭建Java开发环境第二篇:如何在windows10里安装MySQL

如何在eclipsemarketplace里安装反编译