LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数可以解决很多问题;并提供了交互检验(Cross Validation)的功能。该软件可以解决C-SVM、ν-SVM、ε-SVR和ν-SVR等问题,包括基于一对一算法的多类模式识别问题。注意不是matlab自带的svm实现函数。

  1. model = libsvmtrain(training_label_vector, training_instance_matrix [, ‘libsvm_options’]);

这个函数有三个参数,其中

-training_label_vector:训练样本的类标,如果有m个样本,就是m x 1的矩阵(类型必须为double)。这里可以是二分类和多分类,类标是(-1,1)、(1,2,3)或者其他任意用来表示不同的类别的数字,要转成double类型。

-training_instance_matrix:训练样本的特征,如果有m个样本,每个样本特征是n维,则为m x n的矩阵(类型必须为double)。

-libsvm_options:训练的参数,在第3点详细介绍。

libsvmtrain函数返回训练好的SVM分类器模型model是一个结构体,包含以下成员:

-Parameters: 一个5 x 1的矩阵,从上到下依次表示:

-s SVM类型(默认0);

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

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

-g 核函数中的r(gamma)函数设置(针对多项式/rbf/sigmoid核函数) (默认类别数目的倒数);

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

-nr_class: 表示数据集中有多少类别,比如二分类时这个值即为2。

-totalSV: 表示支持向量的总数。

-rho: 决策函数wx+b中的常数项的相反数(-b)。

-Label: 表示数据集中类别的标签,比如二分类常见的1和-1。

-ProbA: 使用-b参数时用于概率估计的数值,否则为空。

-ProbB: 使用-b参数时用于概率估计的数值,否则为空。

-nSV: 表示每类样本的支持向量的数目,和Label的类别标签对应。如Label=[1; -1],nSV=[63; 67],则标签为1的样本有63个支持向量,标签为-1的有67个。

-sv_coef: 表示每个支持向量在决策函数中的系数。

-SVs: 表示所有的支持向量,如果特征是n维的,支持向量一共有m个,则为m x n的稀疏矩阵。

另外,如果在训练中使用了-v参数进行交叉验证时,返回的不是一个模型,而是交叉验证的分类的正确率或者回归的均方根误差。

当构建完成model后,还要为上述参数选择合适的值,方法主要有Gridsearch,其他的感觉不常用,Gridsearch说白了就是穷举。

网格参数寻优函数(分类问题):SVMcgForClass

[bestCVaccuracy,bestc,bestg]=SVMcgForClass(train_label,train,cmin,cmax,gmin,gmax,v,cstep,gstep,accstep)

输入:

train_label:训练集的标签,格式要求与svmtrain相同。

train:训练集,格式要求与svmtrain相同。

cmin,cmax:惩罚参数c的变化范围,即在[2^cmin,2^cmax]范围内寻找最佳的参数c,默认值为cmin=-8,cmax=8,即默认惩罚参数c的范围是[2^(-8),2^8]。

gmin,gmax:RBF核参数g的变化范围,即在[2^gmin,2^gmax]范围内寻找最佳的RBF核参数g,默认值为gmin=-8,gmax=8,即默认RBF核参数g的范围是[2^(-8),2^8]。

v:进行Cross Validation过程中的参数,即对训练集进行v-fold Cross Validation,默认为3,即默认进行3折CV过程。

cstep,gstep:进行参数寻优是c和g的步进大小,即c的取值为2^cmin,2^(cmin+cstep),…,2^cmax,,g的取值为2^gmin,2^(gmin+gstep),…,2^gmax,默认取值为cstep=1,gstep=1。

accstep:最后参数选择结果图中准确率离散化显示的步进间隔大小([0,100]之间的一个数),默认为4.5。

输出:

bestCVaccuracy:最终CV意义下的最佳分类准确率。

bestc:最佳的参数c。

bestg:最佳的参数g。

网格参数寻优函数(回归问题):SVMcgForRegress

[bestCVmse,bestc,bestg]=SVMcgForRegress(train_label,train,cmin,cmax,gmin,gmax,v,cstep,gstep,msestep)

其输入输出与SVMcgForClass类似,这里不再赘述。

SVM 怎样能得到好的结果:

  1. 对数据做归一化(simple scaling)
  2. 应用 RBF kernel
  3. 用cross-validation和grid-search 得到最优的c和g
  4. 用得到的最优c和g训练训练数据
  5. 测试

libsvm使用误区:

(1) 直接将训练集合和测试集合简单归一化到[0,1]区间,可能导致实验结果很差。

(2) 如果样本的特征数非常多,那么就不必使用RBF核将样本映射到高维空间。

a) 在特征数非常多的情况下,使用线性核,结果已经非常好,并且只需要选择参数C即可。

b) 虽然说RBF核的结果至少比线性核好,前提下搜索整个的空间。

(3) 样本数<

(4) 样本数和特征数都非常多:推荐使用liblinear,更少的时间和内存,可比的准确率。

(5) 样本数>>特征数:如果想使用线性模型,可以使用liblinear,并且使用-s 2参数

matlab中bitget函数用法_MATLAB中SVM的用法相关推荐

  1. matlab stem函数坐标轴_MATLAB中stem函数用法

    stem(Y) 将数据序列Y从x轴到数据值按照茎状形式画出,以圆圈终止.如果Y是一个矩阵,则将其每一列按照分隔方式画出. stem(X,Y)在X的指定点处画出数据序列Y.  stem(...,'fil ...

  2. python open 打开是什么类型的文件-详解Python中open()函数指定文件打开方式的用法...

    文件打开方式 当我们用open()函数去打开文件的时候,有好几种打开的模式. 'r'->只读 'w'->只写,文件已存在则清空,不存在则创建. 'a'->追加,写到文件末尾 'b'- ...

  3. python语言中ch用法_pytorch 中pad函数toch.nn.functional.pad()的用法

    padding操作是给图像外围加像素点. 为了实际说明操作过程,这里我们使用一张实际的图片来做一下处理. 这张图片是大小是(256,256),使用pad来给它加上一个黑色的边框.具体代码如下: imp ...

  4. python里删除range里的数字_python中range函数与列表中删除元素

    一.range函数使用 range(1,5)   代表从1到4(不包含5),结果为:1,2,3,4   ,默认步长为1 range(1,5,2)   结果为:1, 3  (同样不包含5) ,步长为2 ...

  5. Oracle中to_char函数和MySQL中的str_to_date函数区别

    标题Oracle中to_char函数和MySQL中的str_to_date函数 1. str_to_date()----->相当于Oracle中的to_char(): 字符串转换为日期格式 (1 ...

  6. mysql中now()函数在oracle中怎么用

    2019独角兽企业重金招聘Python工程师标准>>> mysql中now()函数在oracle中怎么用    2011-9-26 11:38 提问者:wepoom 检举  |  2 ...

  7. 在python中有关函数的表达正确的是_在 Python 中有关函数的表达中正确的是( )。_学小易找答案...

    [单选题]会稽有佳山水,名士多居之,爱好养生的王羲之常与( )等宴集于山阴之兰亭. [判断题]截交线既在截平面上,又在立体表面上,故截交线是截平面与立体表面的共有线,截交线上每一点均为其共有性. [单 ...

  8. matlab中bitget函数用法_Matlab函数大全

    目录 1.时间日期函数................................ ................................ ....................... ...

  9. matlab中bitget函数用法_MATLAB基础函数命令

    1.常用命令 dir:列出当前目录下的所有文件 clc:清除命令窗 clear all:清除环境(从内存中清除所有变量) who:将内存中的当前变量以简单形式列出 close all: 关闭所有的 F ...

  10. matlab获取全局变量的值_MATLAB中搜索、查询和全局变量的用法(摘录)

    1.MATLAB有几千个函数,而且很多函数有多种调用方式,怎样才能比较快的学习掌握? (1)熟练掌握MATLAB的在线帮助命令.MALTAB的各个函数,不管是内建函数.M文件函数.还是MEX文件函数等 ...

最新文章

  1. 企业级工作流解决方案(八)--微服务Tcp消息传输模型之服务端处理
  2. android各目录大小,Android 基础篇 — 放不同drawable文件夹中图片的大小
  3. 问题 1066: 2004年秋浙江省计算机等级考试二级C 编程题(2)
  4. 使用C#和Excel进行报表开发(5)
  5. 小米11系列顶配版曝光:骁龙888加持 代号“star”!
  6. 悉尼大学计算机录取要求,Q 同学_悉尼大学_计算机_录取成功案例分享
  7. linux 字符串截取_第13篇:Linux防火墙的日志基本审计
  8. Qt4_创建菜单和工具栏
  9. 如何创建xsl文件 xml_EXCEL知识分享 I 连载如何快速创建XML文件
  10. 异形双柱体阵列纳米粒:针状/花状纳米粒子/纳米金星/金笼/金壳/三角形纳米金
  11. html5页面交互,H5的交互原型设计
  12. docker ctrl p 失灵
  13. 关于介绍最好用的windows10系统的文章
  14. 安全狗加入天翼网信安全产业联盟 发挥云安全生态影响力
  15. 7-62 贴“福”字
  16. 星巴克招人!要技术大拿。
  17. 中兴服务器迈络思NS312网卡down掉网口物理指示灯不熄灭解决方法--NS312型号ConnectX-4 Lx
  18. Android:仿QQ 发表说说/上传照片 弹出框
  19. matlab 积分 例子,[Matlab]使用arrayfun对矩阵表达式积分的例子
  20. 【CAD arx二次开发】通过Wizard向导新建项目编译遇到的问题汇总

热门文章

  1. php curl选项列表(超详细)
  2. LINUX:GRUB破解root密码【远程不可
  3. 安卓学习UI组件-ExpandablelistView-可拓展的两级列表
  4. String与StringBuffer 理解
  5. 聪明人的游戏(3)镜子颠倒了什么?
  6. android exchange服务,带有“ Service com.android.exchange.ExchangeService
  7. 淮北师范大学计算机学院在哪个校区,2021年淮北师范大学信息学院有几个校区,大一新生在哪个校区...
  8. 潍坊科技学院计算机学院刘君,2019年山东省高校大学生计算机科技创新大会暨第十一届山东省大学生科技节计算机学会六项赛事研讨会在潍坊科技学院举行...
  9. 虚拟机实现二层交换机_局域网SDN技术硬核内幕 5 虚拟化网络的实现
  10. 数据库监听触发器java_SqlServer触发器监听数据调用存储器调用java接口