MATLAB环境使用LIBSVM-安装测试(一)

介绍

LIBSVM是台湾大学林智仁(Chih-Jen Lin)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,目前最新版本是3.23。博文中在MATLAB平台配合实例学习掌握LIBSVM,希望可以对SVM感兴趣的朋友有一定的帮助。

安装

提示:如果是win64位,LIBSVM 中libsvm-3.23\windows文件夹自带了编译好的文件:

libsvmread.mexw64
libsvmwrite.mexw64
svmtrain.mexw64
svmpredict.mexw64

这样就不要编译就可以在MATLAB中使用LIBSVM。

但是还是有必要介绍一下编译过程。
编译环境:win64,matlab2018a。
步骤1:下载
将下载的LIBSVM解压,拷贝至toolbox,最终路径如下

D:\Program Files (x86)\Matlab2018a\toolbox\libsvm-3.23

当然也可以放在其他路径,最好统一在toolbox文件夹内。
步骤2:设置路径

步骤3:配置编译器
在命令窗口的输入mex -setup,输出为:

>> mex -setup
MEX 配置为使用 'Microsoft Visual C++ 2013 (C)' 以进行 C 语言编译。
警告: MATLAB C 和 Fortran API 已更改,现可支持
	 包含 2^32-1 个以上元素的 MATLAB 变量。您需要
	 更新代码以利用新的 API。
	 您可以在以下网址找到更多的相关信息:
	 https://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html。

要选择不同的语言,请从以下选项中选择一种命令:
 mex -setup C++ 
 mex -setup FORTRAN

步骤4:选择mex -setup C++,输出为

MEX 配置为使用 'Microsoft Visual C++ 2013' 以进行 C++ 语言编译。
警告: MATLAB C 和 Fortran API 已更改,现可支持
	 包含 2^32-1 个以上元素的 MATLAB 变量。您需要
	 更新代码以利用新的 API。
	 您可以在以下网址找到更多的相关信息:
	 https://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html。

步骤5:编译
编译前需要设置当前路径为:

D:\Program Files (x86)\Matlab2018a\toolbox\libsvm-3.23\matlab

设置路径。
输入命令:make,或者打开make.m文件执行编译。
3秒内编译好,在matlab文件中生成

libsvmread.mexw64
libsvmwrite.mexw64
svmtrain.mexw64
svmpredict.mexw64

四个文件,安装完成。

测试

libsvm 软件包中自带有测试数据,即软件包根目录下的 heart_scale 文件。但是该文件使用libsvmread函数无法读取, 报错如下:

can’t open input file heart_scale

解决方法有两个,
解决方法1:
下载heart_scale.mat数据,然后在MATLAB打开。或者使用重新制作的该文件下载
解决方法2:
用MATLAB自带函数load加载数据即可。

load heart_scale;

数据即可读入工作区

测试代码如下:


clc;  
clear;  
load heart_scale;
model = svmtrain(heart_scale_label,heart_scale_inst)   
[predict_label,accuracy,dec_values] = svmpredict(heart_scale_label,heart_scale_inst,model) 

输出结果

optimization finished, #iter = 162
nu = 0.431029
obj = -100.877288, rho = 0.424462
nSV = 132, nBSV = 107
Total nSV = 132

model = 

  包含以下字段的 struct:

    Parameters: [5×1 double]
      nr_class: 2
       totalSV: 132
           rho: 0.4245
         Label: [2×1 double]
    sv_indices: [132×1 double]
         ProbA: []
         ProbB: []
           nSV: [2×1 double]
       sv_coef: [132×1 double]
           SVs: [132×13 double]

Accuracy = 86.6667% (234/270) (classification)
安装成功

接下来的博文将会对LIBSVM的数据制作、分类和回归问题进行讲解。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值