SVM学习笔记(1):Win下LibSVM在Matlab中的安装及使用

1 LibSVM工具包简介

LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授于2001年开发设计,可在 http://www.csie.ntu.edu.tw/~cjlin/libsvm/https://github.com/cjlin1/libsvm/releases 免费获得。
下载后解压,主要有6个文件夹和一些源码文件:

  • Java: 主要是应用于java平台;
  • matlab: windows下64位matlab平台;
  • python: 是用来参数优选的工具, 稍后介绍;
  • svm-toy: 一个可视化的工具, 用来展示训练数据和分类界面, 里面是源码, 其编译后的程序在windows文件夹下;
  • tools: 主要包含四个python文件, 用来数据集抽样(subset), 参数优选(grid), 集成测试(easy), 数据检查(checkdata);
  • windows: 包含libSVM四个exe程序包, 我们所用的库就是他们.

2 Win下LIBSVM在Matlab2016b中的安装使用

  1. 将下载的LIBSVM压缩包libsvm-3.23.zip(2018年8月时最新版本)解压,把解压出的文件夹libsvm-3.23复制到Matlab的安装路径下...\MATLAB\R2016b\toolbox
  2. ...\MATLAB\R2016b\toolbox\libsvm-3.23添加到Matlab的搜索路径(添加并包含子文件夹)

注:
因为使用的是64位的操作系统和matlab,而...\MATLAB\R2016b\toolbox\libsvm-3.23\windows下包含了matlab可执行的64位二进制文件libsvmread.mexw64/libsvmwrite.mexw64/svmpredict.mexw64/svmtrain.mexw64,故无需自己编译。
假设你使用的是32位操作系统和matlab,则需要自己编译相应的二进制文件:在matlab命令窗口输入mex –setup,这时matlab会提示你选择编译mex文件的c/c++编译器。选择一个你电脑上安装的c/c++编译器,例如Microsoft Visual C++ 2010,将matlab当前目录设置为:‘…\MATLAB\R2016b\toolbox\libsvm-3.23\matlab’,输入命令make,这时你会看到当前目录生成了二进制文件libsvmread.mexw32/libsvmwrite.mexw32/svmpredict.mexw32/svmtrain.mexw32。将当前目录添加到matlab路径中即可。

  1. 把当前目录设置为...\MATLAB\R2016b\toolbox\libsvm-3.23,输入如下测试代码:
[heart_scale_label,heart_scale_inst]=libsvmread('heart_scale');
model = svmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 0.07');
[predict_label, accuracy, dec_values] =svmpredict(heart_scale_label, heart_scale_inst, model); % test the traindata

得到如下结果,说明安装成功:

*
optimization finished, #iter = 134
nu = 0.433785
obj = -101.855060, rho = 0.426412
nSV = 130, nBSV = 107
Total nSV = 130
Accuracy = 86.6667% (234/270) (classification)

参考:SVM学习笔记(1)LIBSVM在matlab下的使用安装

3 LIBSVM相关函数说明

3.1 libsvmread主要用于读取数据

这里的数据是非matlab下的.mat数据,比如说是.txt,.data等等,这个时候需要使用libsvmread函数进行转化为matlab可识别数据,比如自带的数据是heart_scale数据,那么导入到matlab有两种方式,
一种使用libsvmread函数,在matlab下直接libsvmread(heart_scale);
第二种方式为点击matlab的‘导入数据’按钮,然后导向heart_scale所在位置,直接选择就可以了。因为有的数据libsvmread读取不管用,但是‘导入数据’后就可以变成matlab下数据。

3.2 libsvmwrite写函数,就是把已知数据存起来

使用方式为:libsvmwrite(‘filename’,label_vector, instance_matrix);
label_vector是标签,instance_matrix为数据矩阵(注意这个数据

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值