LIBSVM使用方法及参数设置
http://hi.baidu.com/yuanding232323/item/dee80e1a495c0b2bf6625c88
LIBSVM使用方法及参数设置
主要参考了一些博客以及自己使用经验。收集来觉得比较有用的。
LIBSVM
数据格式需要----------------------
决策属性 条件属性a 条件属性b ...
2 1:7 2:5 ...
1 1:4 2:2 ...
数据格式转换----------------------
当数据较少时,可以用formatdatalibsvm轻松地将文本数据转换成为svm工具使用的数据。
使用方法为:
1,打开FormatDataLibsvm.xls然后将数据粘贴到sheet1的topleft单元。
输入格式为:
条件属性a 条件属性b ... 决策属性
7 5 ... 2
4 2 ... 1
输出数据格式是
决策属性 条件属性a 条件属性b ...
2 1:7 2:5 ...
1 1:4 2:2 ...
2,再"工具"-->"宏"-->执行下面有一个选项(FormatDatatoLibsvm)-->执行,要选中这个然后运行就可以了 ,这时数据转换的问题就解决了(如果没有宏选项,点击“开始--excel选项---在功能区显示“开发工具”选项卡”)
3,可以copy到一个记事本中即可。但是注意在用libsvm的时候要在命令行输入.txt后缀。
svm参数说明----------------------
如果你要输出类的概率,一定要有-b参数
svm-train training_set_file model_file
svm-predict test_file model_fileoutput_file
自动脚本:python easy.py train_data test_data
自动选择最优参数,自动进行归一化。
对训练集合和测试结合,使用同一个归一化参数。
-c:参数
-g: 参数
-v:交叉验证数
-s svm_type : set type of SVM (default 0)
0 -- C-SVC
1 -- nu-SVC
2 -- one-class SVM
3 -- epsilon-SVR
4 -- nu-SVR
-t kernel_type : set type of kernelfunction (default 2)
0 -- linear: u'*v
1 -- polynomial: (gamma*u'*v + coef0)^degree
2 -- radial basis function: exp(-gamma*|u-v|^2)
3 -- sigmoid: tanh(gamma*u'*v + coef0)
-d degree : set degree in kernel function(default 3)
-g gamma : set gamma in kernel function(default 1/num_features)
-r coef0 : set coef0 in kernel function(default 0)
-c cost : set the parameter C of C-SVC,epsilon-SVR, and nu-SVR (default 1)
-n nu : set the parameter nu of nu-SVC,one-class SVM, and nu-SVR (default 0.5)
-p epsilon : set the epsilon in lossfunction of epsilon-SVR (default 0.1)
-m cachesize : set cache memory size in MB(default 100)
-e epsilon : set tolerance of terminationcriterion (default 0.001)
-h shrinking: whether to use the shrinkingheuristics, 0 or 1 (default 1)
-b probability_estimates: whether to traina SVC or SVR model for probability estimates, 0 or 1 (default 0)(如果需要估计分到每个类的概率,则需要设置这个)
-wi weight: set the parameter C of class ito weight*C, for C-SVC (default 1)
Thek in the -g option means the number of attributes in the input data.
libsvm使用误区----------------------
(1) 直接将训练集合和测试集合简单归一化到[0,1]区间,可能导致实验结果很差。
(2) 如果样本的特征数非常多,那么就不必使用RBF核将样本映射到高维空间。
a) 在特征数非常多的情况下,使用线性核,结果已经非常好,并且只需要选择参数C即可。
b) 虽然说RBF核的结果至少比线性核好,前提下搜索整个的空间。
(3) 样本数<<特征数的情况:
a) 推荐使用线性核,可以达到与RBF同样的性能。
(4) 样本数和特征数都非常多:推荐使用liblinear,更少的时间和内存,可比的准确率。
(5) 样本数>>特征数:如果想使用线性模型,可以使用liblinear,并且使用-s 2参数
libsvm在训练model的时候,有如下参数要设置,当然有默认的参数,但是在具体应用方面效果会大大折扣。
Options:可用的选项即表示的涵义如下
-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
其中-g选项中的k是指输入数据中的属性数。option -v 随机地将数据剖分为n部
当构建完成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类似,这里不再赘述。
而当你训练完了model,在用它做classification或regression之前,应该知道model中的内容,以及其含义。
用来训练的是libsvm自带的heart数据
model =
Parameters: [5x1 double]
nr_class: 2
totalSV: 259 % 支持向量的数目
rho: 0.0514 % b
Label: [2x1 double] % classification中标签的个数
ProbA: []
ProbB: []
nSV: [2x1 double] % 每类支持向量的个数
sv_coef: [259x1 double] % 支持向量对应的Wi
SVs: [259x13 double] % 装的是259个支持向量
model.Parameters参数意义从上到下依次为:
-s svm类型:SVM设置类型(默认0)
-t 核函数类型:核函数设置类型(默认2)
-d degree:核函数中的degree设置(针对多项式核函数)(默认3)
-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数) (默认类别数目的倒数)
-r coef0:核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)
SVM 怎样能得到好的结果
1. 对数据做归一化(simple scaling)
2. 应用 RBF kernel
3. 用cross-validation和grid-search 得到最优的c和g
4. 用得到的最优c和g训练训练数据
5. 测试
关于svm的C以及核函数参数设置----------------------
参考自:对支持向量机几种常用核函数和参数选择的比较研究
C一般可以选择为:10^t , t=- 4..4就是0.0001 到10000
选择的越大,表示对错误例惩罚程度越大,可能会导致模型过拟合
在LIBSVM中-t用来指定核函数类型(默认值是2)。
0)线性核函数
(无其他参数)
1)多项式核函数
(重点是阶数的选择,即d,一般选择1-11:1 3 5 7 9 11,也可以选择2,4,6…)
2)RBF核函数
(径向基RBF内核,exp{-|xi-xj|^2/均方差},其中均方差反映了数据波动的大小。
参数通常可选择下面几个数的倒数:0.1 0.2 0.4 0.6 0.8 1.6 3.2 6.4 12.8,默认的是类别数的倒数,即1/k,2分类的话就是0.5)
3)sigmoid核函数 又叫做S形内核
两个参数g以及r:g一般可选1 2 3 4,r选0.2 0.4 0.60.8 1
4)自定义核函数
常用的四种核函数对应的公式如下:
与核函数相对应的libsvm参数:
1)对于线性核函数,没有专门需要设置的参数
2)对于多项式核函数,有三个参数。-d用来设置多项式核函数的最高此项次数,也就是公式中的d,默认值是3。-g用来设置核函数中的gamma参数设置,也就是公式中的第一个r(gamma),默认值是1/k(k是类别数)。-r用来设置核函数中的coef0,也就是公式中的第二个r,默认值是0。
3)对于RBF核函数,有一个参数。-g用来设置核函数中的gamma参数设置,也就是公式中的第一个r(gamma),默认值是1/k(k是类别数)。
4)对于sigmoid核函数,有两个参数。-g用来设置核函数中的gamma参数设置,也就是公式中的第一个r(gamma),默认值是1/k(k是类别数)。-r用来设置核函数中的coef0,也就是公式中的第二个r,默认值是0。
LIBSVM使用方法及参数设置相关推荐
- MATLAB中libsvm的svmtrain和svmpredict函数的使用方法与参数设置
1. svmtrain()使用方法 示例: cmd = [' -t 2',' -s 3 -p 0.01']; model = svmtrain(train_label,train_data,cmd) ...
- 利用OBS和手机摄像头录课(录屏/录像)时的方法与参数设置
目录 1. OBS下载地址 2. OBS录屏设置 2.1 使用向导设置做全局设置 2.2 详细设置 2.2.1 视频设置 2.2.2 音频设置 2.2.3 输出设置 2.2.4 快捷键设置 3. 麦克 ...
- 怎么调计算机运行内存大小,电脑内存怎么超频 电脑内存超频的方法以及参数设置教程...
内存容量非常重要决定着你的电脑进行多程序运行的能力,但是容量并不是衡量内存好坏的唯一标准,内存的频率也相当重要,那么如何才能让内存超频来发挥最大的性能呢?下面来看看内存超频的方法以及参数的设置. 操作 ...
- 初始化方法-使用参数设置属性初始值
class Cat:def __init__(self, new_name):print("这是一个初始化方法")# self.属性名 = 属性的初始值# self.name = ...
- JVM内存模型、相关参数设置与命令查看
JVM内存模型.相关参数设置与命令查看 JVM内存模型,你看这一篇就够了 - 知乎 (zhihu.com) Java虚拟机-Java8内存模型JVM(整理版) - 牧梦者 - 博客园 (cnblogs ...
- LIBSVM的使用方法以及参数注释总结
目录 1. 模型训练 1.1 libsvmtrain三个输入参数,其中 1.2 libsvmtrain返回参数 1.3 模型最佳参数选取 1.4 SVM 怎样能得到好的结果 2. 使用训练模型进行预测 ...
- Python 技巧篇-同一个方法多次引用不同效果功能实现,可选参数设置方法
我达到的效果就是: 直接调用方法不加参数可以正常运行方法,但是加了参数,运行效果就不同了. 换一句话来说: 就是我第一次引用该方法跟以后调用该方法效果不一样.不用通过设置两个方法来实现,只要一个方法. ...
- 台安变频器n2按键说明_台安变频器N2型号说明参数设置故障代码及故障解决方法...
原标题:台安变频器N2型号说明参数设置故障代码及故障解决方法 台安变频器N2额定电压.功率范围: 220V单/三相(0.4KW-22KW) 380V三相(0.75KW-22KW) 台安变频器N2特点: ...
- a5松下驱动器参数设置表_松下伺服几个参数需要熟悉并掌握设置方法
松下伺服参数共有200多个,但一般的控制场合只需要掌握少数几个即可.伺服系统有位置控制.速度控制.转矩控制以及三者的组合等多种控制模式,但大多数场合都是将伺服系统用于精密定位,其次是转矩控制,速度控制 ...
- 计算机的iscsi配置,PC端的iSCSI参数设置方法
PC端的iSCSI参数设置方法 上面介绍完NAS端的设置,接下来再来给大家介绍一下PC端的iSCSI设置,主要是实现在PC端上连接使用NAS上的iSCSI存储空间,这里我们以Windows 7 SP1 ...
最新文章
- Firefox显示 您的链接不安全 的解决办法
- Spring Cloud实战小贴士:Zuul的饥饿加载(eager-load)使用
- VTK:图表之AdjacencyMatrixToEdgeTable
- BZOJ 3694DTOJ 1972: 最短路
- 图解分布式架构的演进过程!
- CSS3中的3D变换与简易立方体的制作
- 如何在树莓派中设置本地时区的问题解决
- insert oracle用法,insert into select的实际用法,insertselect
- Java后端开发流程
- 【官方文档】Fluent Bit 安装
- 研华工控机改软PLC使用教程
- Selenium Grid使用
- 【第86期】CPU 空闲时在干嘛?
- 数据结构 笔记--向量 C++ 语言版 邓俊辉老师
- 大脑构造图与功能解析_【大脑结构图及功能图】_构造图_作用-大众养生网
- Spring拦截器配置详解(如何定义一个拦截器)
- html显示word大段空白,word 文档中间出现很大一段空白,中间没有其他东
- Java基础学习生疏知识点总结(4)——面向对象、单一职责原则、this关键字、构造方法
- 360无线网卡linux驱动下载,如何在Linux下写无线网卡的驱动
- 磁场传感器(指北针)
热门文章
- 视频直播技术(三):低延时直播经验总结
- VMware克隆CentOS6.4后 eth0无法初始化
- 配置CACTI监控MySQL数据库状态(2)安装cacti相关软件包
- 加密与解密 linux,security 02: 加密与解密 、 扫描与抓包 、 总结和答疑 、 SELinux安全防护(示例代码)...
- Vector和Arraylist的区别
- wordpress中如何正确书写robots.txt
- C语言判断四个嫌疑犯问题,C语言谁是窃贼问题代码及解析
- mysql查询前一年的第一天_MySQL中查询某一天, 某一月, 某一年的数据代码详解
- php中多重继承,PHP如何使用接口实现多重继承?(代码示例)
- python没有报错但是没结果_python爬取豆瓣top250的电影的信息,没有报错哦,但是没有结果...