说明:

此工具箱是matlab中文论坛版主faruto在林智仁教授版本上改进的libsvm工具箱。

工具箱下载地址:http://www.matlabsky.com/thread-17936-1-1.html

本文主要介绍其中增加的参数(c和RBF核函数中的g)寻优函数和其他一些有用的函数。

一、Grid Search 网格搜索

(1)函数:SVMcgForClass.m (分类问题寻优)、SVMcgForRegress.m(回归问题参数寻优)。

详细内容见:http://www.matlabsky.com/thread-12411-1-1.html

(2)使用方法

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

2、启发式遗传算法GA

(1)函数: gaSVMcgForClass.m(分类问题参数寻优)、gaSVMcgForRegress.m(回归问题参数寻优)

详情:http://www.matlabsky.com/thread-12412-1-1.html

(2)使用方法

默认范围:c(0.1-100)、g(0.01-1000)、5折交叉验证。

[bestCVaccuracy,bestc,bestg,ga_option]= gaSVMcgForClass(train_label,train,ga_option)常用格式:[bestCVaccuracy,bestc,bestg] = gaSVMcgForClass(train_label,train)

[bestCVmse,bestc,bestg,ga_option]= gaSVMcgForRegress(train_label,train,ga_option)

若想修改某些默认项比如c、g的范围,可以在原文件中直接修改。或者ga_option.cbound=[]; ……

(3)参数详解

ga_option:GA中的一些参数设置,可不输入(即去掉等号两边或左边的ga_option),有默认值,详细请看代码的帮助说明。

ga_option =struct('maxgen',200,'sizepop',20,'ggap',0.9,'cbound',[0,100],'gbound',[0,1000],'v',5);1. % maxgen:最大的进化代数,默认为200,一般取值范围为[100,500]2. % sizepop:种群最大数量,默认为20,一般取值范围为[20,100]3. % cbound = [cmin,cmax],参数c的变化范围,默认为(0,100]4. % gbound = [gmin,gmax],参数g的变化范围,默认为[0,1000]5. % v:SVM Cross Validation参数,默认为5

3、粒子群算法PSO

(1)函数:psoSVMcgForClass.m(分类问题参数寻优)、psoSVMcgForRegress.m(回归问题参数寻优)

详情:http://www.matlabsky.com/thread-12414-1-1.html

(2)使用方法

默认范围:c(0.1-100)、g(0.01-1000)、3折交叉验证。

适应度函数:分类问题适应度函数用的是cv下的分类准确率;回归问题适应度函数用的是cv下的mse。即fitness(j) = svmtrain(train_label, train, cmd);

[bestCVaccuracy,bestc,bestg,pso_option]= psoSVMcgForClass(train_label,train,pso_option)常用格式为:[bestCVaccuracy,bestc,bestg]= psoSVMcgForClass(train_label,train)
[bestCVmse,bestc,bestg,pso_option]= psoSVMcgForRegress(train_label,train,pso_option)若想修改某些默认项比如c、g的范围,可以在原文件中直接修改。或者在使用该函数之前:pso_option.popcmax=10000; ……


(3)参数详解

pso_option =struct('c1',1.5,'c2',1.7,'maxgen',200,'sizepop',20, ...'k',0.6,'wV',1,'wP',1,'v',5,...'popcmax',10^2,'popcmin',10^(-1),'popgmax',10^3,'popgmin',10^(-2));1. % c1:初始为1.5,pso参数局部搜索能力2. % c2:初始为1.7,pso参数全局搜索能力3. % maxgen:初始为200,最大进化数量4. % sizepop:初始为20,种群最大数量5. % k:初始为0.6(k belongs to [0.1,1.0]),速率和x的关系(V = kX)6. % wV:初始为1(wV best belongs to [0.8,1.2]),速率更新公式中速度前面的弹性系数7. % wP:初始为1,种群更新公式中速度前面的弹性系数8. % v:初始为3,SVM Cross Validation参数9. % popcmax:初始为100,SVM参数c的变化的最大值.10.% popcmin:初始为0.1,SVM参数c的变化的最小值.11.% popgmax:初始为1000,SVM参数g的变化的最大值.12. % popgmin:初始为0.01,SVM参数c的变化的最小值.

4、辅助函数 

ClassResult.m函数,方便给出各种分类准确率,以及给出判别函数的权值w、偏置b、支持向量在原始训练集中的位置索引以及alpha系数。

格式

 CR = ClassResult(label, data, model,type)% type 1:输入的data为训练集%      2:输入的data为测试集%当输入的data为训练集时,需要事先在外部将标签转换为1,-1

出现的问题及解决措施:20170626更新

运行问题:

>> model = svmtrain(output_train,inputtrain','-s 0 -t 2 -c bestc -g bestg');
Error: C <= 0

解决方法:

1、分开运行,将SVMcgForClass得到的值直接写在svmtrain中。

[bestCVaccuracy,bestc,bestg] = SVMcgForClass(output_train,inputtrain',10,15,-8,8,5);
model = svmtrain(output_train,inputtrain','-s 0 -t 2 -c 16384 -g 0.5743');

注意:改变c和g的范围,可以影响最终分类准确率。

此法比较“笨”。

2、

%grid search 参数优化
[bestCVaccuracy,bestc,bestg] = SVMcgForClass(output_train,inputtrain',0,7,-8,8,5);

cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg),'-s 0 -t 2'];
model = svmtrain(output_train,inputtrain',cmd)

即在中间加一步格式的转换。

libsvm-3.1-[FarutoUltimate3.1Mcode]——辅助函数简介(修改)相关推荐

  1. 抖音服务器升级暂时不能修改简介,抖音简介修改内容暂不可用,抖音简介哪些内容不能用...

    原标题:抖音简介修改内容暂不可用,抖音简介哪些内容不能用 大家看到我这片文章不要急,花三分钟看完,很有帮助! 最近有小伙伴说自己抖音账号修改了简介,但不知道什么原因,老是提示简介暂不可用,这是什么原因 ...

  2. 【Android 逆向】整体加固脱壳 ( 脱壳点简介 | 修改系统源码进行脱壳 )

    文章目录 一.脱壳点简介 二.修改系统源码进行脱壳 一.脱壳点简介 在上一篇博客 [Android 逆向]整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 rewriteD ...

  3. 【音频处理】Melodyne 选择工具使用 ( 主工具简介 | 修改音高 | 自动吸附 | 音符长度修改 | 长度自动吸附 | 设置音符分离线 | 设置片段分离线 )

    文章目录 一.主工具简介 二.选择工具 | 修改音高 三.自动吸附 四.修改音符长度 五.修改音符长度自动吸附 六.音符分离线设置 七.设置片段分离线 一.主工具简介 主工具 是 主工具栏 中的 66 ...

  4. Kubernetes插件:Intel sriov-cni插件简介/修改

    github blog:https://xftony.github.io sriov-cni简介 sriov-cni是hustcat/sriov-cni开发的一种容器网络插件(Container Ne ...

  5. 为什么自己编写的页面总是在那里抖动_为什么小红书的简介添加不上 个性签名的修改方法...

    很多刚刚开通小红书的小可爱可能会迷惑,博主们的简介是怎么添加上去的?为什么自己小红书的简介添加不上?我们该怎么修改个性签名?别担心!掌握以下个性签名的修改方法,你也可以,跟着小编走,保你学会. 为什么 ...

  6. 【Android 逆向】ART 脱壳 ( 修改 /art/runtime/dex_file.cc#OpenCommon 系统源码进行脱壳 )

    文章目录 一.要修改的源码 /art/runtime/dex_file.cc#OpenCommon 二.修改 /art/runtime/dex_file.cc#OpenCommon 函数源码进行脱壳 ...

  7. 【C 语言】指针间接赋值 ( 直接修改 和 间接修改 指针变量 的值 | 在函数中 间接修改 指针变量 的值 | 在函数中 间接修改 外部变量 的原理 )

    文章目录 一.直接修改 和 间接修改 指针变量 的值 二.在函数中 间接修改 指针变量 的值 三.在函数中 间接修改 外部变量 的原理 一.直接修改 和 间接修改 指针变量 的值 直接修改 指针变量 ...

  8. 如何修改emcp的sn号_百家号领域选择错误怎么办?百家号怎么更改领域?

    我之前就强调过,做自媒体运营,正式开始之前,先做好定位,选好自己擅长的或者感兴趣的细分领域,这样才能保证以后能长期做,保证内容的输出量.很很多新人听说自媒体能赚钱,就直接进来了,随便注册了一个账号,领 ...

  9. php 辅助函数,辅助函数 - Laravel 5.8 中文文档手册 - php中文网手册

    辅助函数 简介 Laravel 包含各种各样的「全局」PHP 辅助函数,框架本身也大量的使用了这些功能函数:如果你觉的方便,你可以在你的应用中任意使用这些函数 可用方法 数组 & 对象 路径 ...

最新文章

  1. MasterPage,Page 2者之间事件的执行顺序
  2. 每日一皮:客户说想要增加一个新功能,你看我做的如何?
  3. 苹果签名分发系统需要什么配置的服务器呢,苹果/IOS超级签名分发系统
  4. php7.1 改动,PHP7错误处理机制修改
  5. maven package 知识(转载)
  6. python取列表中位数_Python如何获取列表(List)的中位数
  7. 学习-【前端】-angularjs基本框架以及向服务器发送请求的方法
  8. php体检管理系统,学生健康体检信息管理系统
  9. 如何完美实现微信自动发朋友圈自动添加好友等等
  10. echarts 的柱状图 填充色为透明
  11. 普适计算Topic推荐-AMiner
  12. 基于云服务创建实时运营数据分析服务(一)
  13. 使用maven编译打包用javac还是eclipse的jdt的问题
  14. C++中关于数据小数点,取整的方法
  15. 软件测试工程师岗位个人简历怎么写
  16. 开机自启动Screen并在后台运行程序
  17. 过亿云资源运维管控难?华为云CloudMap带你喝着咖啡做运维
  18. 算法课堂笔记01-语句频度计算
  19. 【状态模式】Java设计模式之状态模式
  20. RFID仓库管理解决方案-RFID智能仓储-RFID智能仓储-新导智能

热门文章

  1. 电脑计算机无法安3.5,Windows无法安装以下功能:.NET Framework 3.5(包括 .NET 2.0 和 3.0)解决方法...
  2. oracle表空间管理sql,oracle表空间管理维护
  3. c语言实现全排列并存储,C语言实现全排列和回溯法总结
  4. java objective-c,Objective-C基础教程学习笔记(附录)从Java转向Objective-C
  5. 拉线分切质量在线检测系统
  6. 机器视觉:SLAM技术详解
  7. echarts常用方法(一)
  8. OpenGL 获取当前屏幕坐标对应的三维坐标
  9. 团购潮冲击佣金模式 携程拒三倍赔付藏消费陷阱
  10. phoenixframe自动化测试平台对Firefox和chrome支持的说明