一、安装

http://www.csie.ntu.edu.tw/~cjlin/libsvm/matlab/。在这个地址上可以下的包含matlab接口的源程序。下载完后可以放到放到任意的盘上解压,最好建一个专门来放matlab程序的文件夹。打开matlab,在matlab的面板上找到set path选项(不同版本不一样R2010b在file菜单下),将刚下载的libsvm整个目录都添加到matlab的搜索路径里。然后将当前路径定位到libsvm/matlab目录下(在current floder(matlab界面中间上方可以设置))。如果你的电脑是64位一般不需要编译生成mex文件,因为文件已经提前编译好了。如果是32位的话,那么需要点击make.m文件运行编译生成mex文件。这一步有可能不成功,可以输入mex-setup查看选择C++编译器,如果找不到编译器,那么下载安装visual studio。成功编译完成后,在任意的matlab程序中都可以使用libsvm了。

二、使用

在使用之前,要对libsvm做一个了解,而最好的资料自然是libsvm种README文件了。README文件包含了介绍,安装,SVM返回的模型参数,以及例子等。Libsvm主要用了两个函数svmtrain,svmpredict,如果你在用的时候忘了具体的参数,可以在matlab命令提示符下输入函数名就有相关的提示。

用法:1.model = svmtrain(training_label_vector, training_instance_matrix [, ‘libsvm_options‘]);

(1)training_label_vector, training_instance_matrix :

training_label_vector和training_instance_matrix就是要训练的标签和特征了。training_label_vector一般以列向量的形式存放的,每个元素即每行代表一个instance(一般是特征)的标签。而training_instance_matrix也类似每行代表一个instance.

如图所示,上面变量代表有930个instance来训练,每个instance1116维,下面是对于instance的标签。

(2)Libsvm_options:

怎么选择呢?libsvm_options:重要的是-t,以及交叉验证时的-v

-s svm类型:SVM设置类型,一般默认0不用设置

0 -- C-SVC(多类分类) 1 --v-SVC(多类分类) 2 –一类SVM 3 -- e –SVR 4 -- v-SVR

-t 核函数类型:核函数设置类型(默认2)

0 –线性:u‘v 1 –多项式:(r*u‘v + coef0)^degree 2 – RBF函数:exp(-gamma|u-v|^2)

3 –sigmoid:tanh(r*u‘v + coef0)

-d degree:核函数中的degree设置(针对多项式核函数)(默认3)

-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)(默认1/ k)

-r coef0:核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)

-c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1)

-n nu:设置v-SVC,一类SVM和v- SVR的参数(默认0.5)

-p p:设置e -SVR 中损失函数p的值(默认0.1)

-m cachesize:设置cache内存大小,以MB为单位(默认40)

-e eps:设置允许的终止判据(默认0.001)

-h shrinking:是否使用启发式,0或1(默认1)

-wi weight:设置第几类的参数C为weight*C(C-SVC中的C)(默认1)

-v n: n-fold交互检验模式,n为fold的个数,必须大于等于2

(3)返回的model:

如上图 -Parameters: 参数。

-nr_class: 类的数目。

-totalSV:总的支持向量数目。

-rho: -判决函数wx+b的b。

-Label: 每个类的标签。

-ProbA: 成对的概率信息,如果b是 0则为空。

-ProbB: 成对的概率信息,如果b是 0则为空。

-nSV: 每个类的支持向量

-sv_coef:判决函数的系数

-SVs:支持向量。

如果指定了‘-v‘,那么就实施了交叉验证,而且返回是交叉验证的正确率。

用法:

2. [predicted_label, accuracy, decision_values/prob_estimates] = svmpredict(testing_label_vector, testing_instance_matrix, model [, ‘libsvm_options‘]);

(1)esting_label_vector, testing_instance_matrix:

类似于svmtrain

(2)libsvm_options:

-b 概率估计:默认0,1表示估计。(需要在使用时显式表现)

(3)predicted_label, accuracy, decision_values/prob_estimates:

predicted_label: SVM 预测输出向量。类似于输入的label

accuracy: 向量包括正确率,均方误差,方相关系数.

decision_values:每行是预测k(k-1)/2二类SVMs的结果

prob_estimates:每行包括k个值代表每类中测试数据所占的概率。

三、核函数

核函数的 目的是将特征向量映射到高维空间。SVM通过在高维空间寻找最大的间距的分类超平面。

核函数总共有以下4种,我们要了解在什么情况下用哪一种核函数。

一般情况下,首选RBF核,它能够把样本以非线性的方式映射到高维空间,所以能够处理类标签和特征不是线性关系的情况。线性核只是RBF的一种特殊情况。

但是有些情况下RBF核并不适用,比如特征的数量特别大的时候,一般仅仅使用线性核。

四、调参-交叉验证和网格搜索

RBF核中有两个参数需要确定 。我们并不知道怎么样的是最适用于给定的问题的。最常用的方式就是交叉验证即把训练的数据分成两部分,把一部分当成知道的,另一部分是不知道的。比如在v-fold 交叉验证中,先把训练数据分成v个相同大小的子集。然后用v-1子集的训练数据训练分类器,用剩下一个子集来测试分类器。交叉验证能够解决过拟合的问题。要怎么利用交叉验证来选取最好的呢?一般是利用网格搜索,己将组成的坐标系分成一系列网格。然后用网格上点(即对于一个个)做交叉验证,取使最后交叉验证的正确率最高的参来做为最终的参数。

ps:什么时候用RBF,什么时候用线性核

1.样本数量远远小于特征数时

比如训练和测试数据有二三十个而特征维数有好几千时,采用线性核是最好的,不需要映射数据。

2.样本数量和特征数都非常大时

可以利用另一工具箱LIBLINEAR,或者用线性核

3.样本数量远远大于特征数时

用非线性核是最好的了。

参考文献:http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf

原文:http://www.cnblogs.com/dawnminghuang/p/3825229.html

libsvm matlab 使用,Libsvm在matlab环境下使用指南相关推荐

  1. matlab sar adc建模,Simulink环境下的SAR ADC行为建模与仿真分析

    韩笑 孙玲 吴秀山 摘 要: 逐次逼近型模/数转换器由于电路复杂度较低,且功耗和速度等性能可以随着集成电路工艺的进步而不断提升,在高速.高精度ADC設计中被广泛应用.借助Matlab软件环境下的Sim ...

  2. matlab 设置perl解释器,Windows环境下静态编译Perl语言解释器(perl.exe)

    前言 实际上我从来没有使用过Perl语言,我对它的认知,也仅限于它能干很多事情,但核心功能是处理正则表达式,那么为什么会想要编译它呢?因为我是一个命令行工具收集控,我收集命令行工具的原则是单个exe文 ...

  3. ACE在AIX环境下编译指南

    (1)  gzip -d ACE-6.0.0.tar.gz 解压缩后得到文件 ACE-6.0.0.tar (2)  tar -xvf ACE-6.0.0.tar 解包后,生成了子目录ACE_wrapp ...

  4. MATLAB下载libsvm,以及对应MinGW-w64版本下载(亲测有效)

    MATLAB下载libsvm,以及对应MinGW-w64版本下载(亲测有效) 最近在学习SVM,在matlab上安装和使用Libsvm的过程中遇到了好多问题,在网上查看了许多资料,踩了许多坑. 整理一 ...

  5. Matlab配置libsvm并实现官方教程

    文章导航 libsvm的安装 官方教程 一个简单的测试实例 libsvm的安装 libsvm是一个实现了SVM支持向量机的库,可以在MATLAB上配置调用,以下是我的安装流程,包括记录一下在安装过程中 ...

  6. matlab安装LIBSVM

    由于matlab中自带的svmtrain和svmclassify函数只能进行原始的二分(标签只能包含两个类别,正和负),如果想使用多类别标签分类,比如高光谱分类等等,那么就需要使用libsvm工具箱, ...

  7. matlab调用weka,weka学习(7)-Weka以及Matlab,LibSVM接口

    Weka是个口碑很好的machine learning工具,可怜我这土鳖以前都没用过. Weka还是很intuitive的,直接给你GUI,随便你选算法,直接帮你做cross validation,还 ...

  8. matlab中libsvm的svmtrain函数用法

    这里的LIBSVM是一个由台湾大学林智仁(Lin Chih-Jen)教授等开发的SVM模式识别与回归的软件包,使用简单,功能强大,本文主要介绍其在Matlab中的使用. 注意不是matlab自带的sv ...

  9. Win10环境下,在Matlab R2016a上的SPM12安装教程

    写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 安装基本环境: 1.WIN10 2.Matlab R2016a 3.SPM12 目录 1.SPM12简介 2.SPM12 ...

最新文章

  1. 广泛的信号处理链如何让语音助理“正常工作”
  2. 数据科学家需要知道的5种图算法
  3. 对下载的包进行修改--python
  4. c#组元(Tuple)的使用
  5. 会议交流 | 如何将图谱实体与关系更好的向量化,并基于推理扩充知识边界?——DataFun Summit2022知识图谱在线峰会...
  6. VS编译器安装Eigen
  7. 74ls90设计十进制计数器电路图_利用555与74ls90制作电子秒表
  8. C语言宏的高级应用-转
  9. rabbitmq的发布订阅
  10. lfm雷达信号处理matlab,雷达信号处理-线性调频(LFM)Chirp信号脉冲压缩
  11. matlab计算一元四次方程,一元四次方程解法
  12. PAT-ADVANCED1013——Battle Over Cities
  13. java中|和||的使用和区别
  14. 数学表达式基础——2 集合、向量与矩阵
  15. Python--邮件处理
  16. [Power Query]:自动提取自定义一周的数据
  17. XCTF final noxss
  18. 量子计算与量子信息之量子计算概述
  19. 世界各国营商环境指数数据集(2004-2020年)
  20. 八、CISP 教材缩略语(2019 版)

热门文章

  1. 阿里云专线ip流量排行(日志服务+Grafana)
  2. Windows下如何查看被占用进程及结束进程?
  3. 正则表达式_Pattern_Marcher_System类_Date\SimpleDateFormat
  4. 自动驾驶算法详解(1) : Apollo路径规划 Piecewise Jerk Path Optimizer的python实现
  5. 基于持续同调的在线社交网络传播研究
  6. Python实现AI视频识别——手势控制
  7. halcon基础学习(2)—blob分析
  8. 寄存器分类及基本作用
  9. LeetCode笔记:Biweekly Contest 84
  10. 调节彩色图像亮度(基于不同的颜色空间)