资源描述:
《遗传算法选取最优参数matlab程序》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、复制代码在这里使用启发式算法GA(遗传算法)来进行参数寻优,用网格划分(gridsearch)来寻找最佳的参数c和g,虽然采用网格搜索能够找到在CV意义下的最高的分类准确率,即全局最优解,但有时候如果想在更大的范围内寻找最佳的参数c和g会很费时,采用启发式算法就可以不必遍历网格内的所有的参数点,也能找到全局最优解。关于遗传算法这里不打算过多介绍,想要学习的朋友可以自己查看相关资料。使用GA来进行参数寻优在在libsvm-mat-2.89-3[FarutoUltimate3.0]工具箱中已经实现gaSVMcgForClass.m(分类问题参数寻优)、gaSVMcgForRe
2、gress.m(回归问题参数寻优)。1.利用GA参数寻优函数(分类问题):gaSVMcgForClass2.[bestCVaccuracy,bestc,bestg,ga_option]=3.gaSVMcgForClass(train_label,train,ga_option)4.输入:5.train_label:训练集的标签,格式要求与svmtrain相同。6.train:训练集,格式要求与svmtrain相同。7.ga_option:GA中的一些参数设置,可不输入,有默认值,详细请看代码的帮助说明。8.输出:9.bestCVaccuracy:最终CV意义下的最佳分类准
3、确率。10.bestc:最佳的参数c。11.bestg:最佳的参数g。12.ga_option:记录GA中的一些参数。13.==========================================================14.利用GA参数寻优函数(回归问题):gaSVMcgForRegress15.[bestCVmse,bestc,bestg,ga_option]=16.gaSVMcgForRegress(train_label,train,ga_option)17.其输入输出与gaSVMcgForClass类似,这里不再赘述。复制代码gaSVMcgF
4、orClass.m源代码:1.function[BestCVaccuracy,Bestc,Bestg,ga_option]=gaSVMcgForClass(train_label,train_data,ga_option)2.%gaSVMcgForClass3.4.%%5.%byfaruto6.%Email:patrick.lee@foxmail.comQQ:516667408http://blog.sina.com.cn/farutoBNU7.%lastmodified2010.01.178.9.%%若转载请注明:10.%farutoandliyang,LIBSVM-f
5、arutoUltimateVersion1.%atoolboxwithimplementsforsupportvectormachinesbasedonlibsvm,2009.2.%3.%Chih-ChungChangandChih-JenLin,LIBSVM:alibraryfor4.%supportvectormachines,2001.Softwareavailableat5.%http://www.csie.ntu.edu.tw/~cjlin/libsvm6.7.%%参数初始化8.ifnargin==29. ga_option=struct('maxgen',2
6、00,'sizepop',20,'ggap',0.9,...10. 'cbound',[0,100],'gbound',[0,1000],'v',5);11.end12.%maxgen:最大的进化代数,默认为200,一般取值范围为[100,500]13.%sizepop:种群最大数量,默认为20,一般取值范围为[20,100]14.%cbound=[cmin,cmax],参数c的变化范围,默认为(0,100]15.%gbound=[gmin,gmax],参数g的变化范围,默认为[0,1000]16.%v:SVMCrossValidation参数,默认为517.1
7、8.%%19.MAXGEN=ga_option.maxgen;20.NIND=ga_option.sizepop;21.NVAR=2;22.PRECI=20;23.GGAP=ga_option.ggap;24.trace=zeros(MAXGEN,2);25.26.FieldID=...27.[rep([PRECI],[1,NVAR]);[ga_option.cbound(1),ga_option.gbound(1);ga_option.cbound(2),ga_option.gbound(2)];...28.[1,1;0,0