遗传算法选取最优参数MATLAB程序_第1页
遗传算法选取最优参数MATLAB程序_第2页
遗传算法选取最优参数MATLAB程序_第3页
遗传算法选取最优参数MATLAB程序_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、复制代码在这里使用启发式算法GA (遗传算法)来进行参数寻优,用网格划分 (grid search)来寻找最佳的参数c和g,虽然采用网格搜索能够找到在CV意义下的最高的分类准确率,即全局最优解,但有时候如果想在更大的范围内寻找最佳的参数c和g会很费时,采用启发式算法就可以不必遍历网格内的所有的参数点,也能找到全局最优解。关于遗传算法这里不打算过多介绍,想要学习的朋友可以自己查看相关资料。使用GA来进行参数寻优在在libsvm-mat-2.89-3FarutoUltimate3.0工具箱中已经实现gaSVMcgForClass.m (分类问题参数寻优)、gaSVMcgForRegress.m (

2、回归问题参数寻优)。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意义下的最佳分类准确率。10. bes

3、tc:最佳的参数 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类似,这里不再赘述。复制代码gaSVMcgForClass.m 源代码:1. function BestCVaccuracy,Bestc,Bestg,ga_option= gaSVMc

4、gForClass(train_label,train_data,ga_option)2. % gaSVMcgForClass3.3. %4. % by faruto5. %Email:patrick.lee QQ:516667408 BNU6. %last modified 2010.01.178.7. %若转载请注明:8. % faruto and liyang , LIBSVM-farutoUltimateVersion9. %a toolbox with implements for support vector machines based on libsvm, 2009.10. %

5、11. % Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for12. % support vector machines, 2001. Software available at13. % .tw/cjlin/libsvm16.14. %#数初始化15. if nargin = 216. ga_option = struct('maxgen',200,'sizepop',20,'ggap',0.9,.17. 'cbound'

6、,0,100,'gbound',0,1000,'v',5);18. end19. % maxgen:最大的进化代数,默认为200,一般取值范围为100,50020. % sizepop:种群最大数量,默认为20, 一般取值范围为20,10021. % cbound = cmin,cmax,参数 c 的变化范围,默认为(0,10022. % gbound = gmin,gmax,参数 g 的变化范围,默认为0,100023. % v:SVM Cross Validation 参数,默认为 527.24. %25. MAXGEN = ga_option.maxgen

7、;26. NIND = ga_option.sizepop;27. NVAR = 2;28. PRECI = 20;29. GGAP = ga_option.ggap;30. trace = zeros(MAXGEN,2);35.31. FieldID =.32. rep(PRECI,1,NVAR);ga_option.cbound(1),ga_option.gbound(1);ga_ option.cbound(2),ga_option.gbound(2); .33. 1,1;0,0;0,1;1,1;39.34. Chrom = crtbp(NIND,NVAR*PRECI);41.35. g

8、en = 1;36. v = ga_option.v;37. BestCVaccuracy = 0;38. Bestc = 0;39. Bestg = 0;40. %41. cg = bs2rv(Chrom,FieldID);49.42. for nind = 1:NIND43. cmd = '-v ',num2str(v),' -c ',num2str(cg(nind,1),' -g',num2str(cg(nind,2);44. ObjV(nind,1) = svmtrain(train_label,train_data,cmd);45. e

9、nd46. BestCVaccuracy,I = max(ObjV);47. Bestc = cg(I,1);48. Bestg = cg(I,2);57.49. %50. while 151. % for gen = 1:MAXGEN52. FitnV = ranking(-ObjV);62.53. SelCh = select('sus',Chrom,FitnV,GGAP);54. SelCh = recombin('xovsp',SelCh,0.7);55. SelCh = mut(SelCh);66.56. cg = bs2rv(SelCh,FieldI

10、D);57. for nind = 1:size(SelCh,1)58. cmd = '-v ',num2str(v),' -c ',num2str(cg(nind,1),' -g ',num2str(cg(nind,2);59. ObjVSel(nind,1) = svmtrain(train_label,train_data,cmd);60. end72.61. Chrom,ObjV = reins(Chrom,SelCh,1,1,ObjV,ObjVSel);74.62. if max(ObjV) <= 5063. continue;6

11、4. end78.65. NewBestCVaccuracy,I = max(ObjV);66. cg_temp = bs2rv(Chrom,FieldID);67. temp_NewBestCVaccuracy = NewBestCVaccuracy;82.68. if NewBestCVaccuracy >BestCVaccuracy69. BestCVaccuracy = NewBestCVaccuracy;70. Bestc = cg_temp(I,1);71. Bestg = cg_temp(I,2);72. end88.73. if abs( NewBestCVaccurac

12、y-BestCVaccuracy ) <= 10A(-2) && .74. cg_temp(I,1) < Bestc75. BestCVaccuracy = NewBestCVaccuracy;76. Bestc = cg_temp(I,1);77. Bestg = cg_temp(I,2);78. end95.79. trace(gen,1) = max(ObjV);80. trace(gen,2) = sum(ObjV)/length(ObjV);98.81. gen = gen+1;100.82. if gen <= MAXGEN/283. contin

13、ue;84. end85. if BestCVaccuracy >=80 &&.86. ( temp_NewBestCVaccuracy-BestCVaccuracy ) <= 10A(-2)87. break;88. end89. if gen= MAXGEN90. break;91. end111.92. end93. gen = gen -1;94. %95. figure;96. hold on;97. trace = round(trace*10000)/10000;98. plot(trace(1:gen,1),'r*-','Li

14、neWidth',1.5);99. plot(trace(1:gen,2),'o-','LineWidth',1.5);100. legend('最佳适应度','平均适应度',3);101. xlabel('进化代数','FontSize',12);102. ylabel('适应度','FontSize',12);103. axis(0 gen 0100);104. grid on;105. axis auto;126.106. line1 ='适应度曲线 AccuracyGAmethod'107. line2 ='(终止代数=',.108. num2str(gen),', 种群数量 pop='

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论