当前位置: >>
遗传算法选取最优参数MATLAB程序
复制代码 在这里使用启发式算法 GA(遗传算法)来进行参数寻优,用网格划分(grid search)来寻找最 佳的参数 c 和 g,虽然采用网格搜索能够找到在 CV 意义下的最高的分类准确率,即全局最 优解,但有时候如果想在更大的范围内寻找最佳的参数 c 和 g 会很费时,采用启发式算法就 可以不必遍历网格内的所有的参数点,也能找到全局最优解。 关于遗传算法这里不打算过多介绍,想要学习的朋友可以自己查看相关资料。 使 用 GA 来 进 行 参数 寻优 在 在 libsvm-mat-2.89-3[FarutoUltimate3.0] 工 具 箱 中 已 经 实现 gaSVMcgForClass.m(分类问题参数寻优) 、gaSVMcgForRegress.m(回归问题参数寻优) 。 1. 2. 3. 4. 5. 6. 7. 利用 GA 参数寻优函数(分类问题):gaSVMcgForClass [bestCVaccuracy,bestc,bestg,ga_option]= gaSVMcgForClass(train_label,train,ga_option) 输入: train_label:训练集的标签,格式要求与 svmtrain 相同。 train:训练集,格式要求与 svmtrain 相同。 ga_option:GA 中的一些参数设置,可不输入,有默认值,详细请看代码的帮助 说明。 8. 输出: 9. bestCVaccuracy:最终 CV 意义下的最佳分类准确率。 10. bestc:最佳的参数 c。 11. bestg:最佳的参数 g。 12. ga_option:记录 GA 中的一些参数。 13. ========================================================== 14. 利用 GA 参数寻优函数(回归问题):gaSVMcgForRegress 15. [bestCVmse,bestc,bestg,ga_option]= 16. gaSVMcgForRegress(train_label,train,ga_option) 17. 其输入输出与 gaSVMcgForClass 类似,这里不再赘述。 复制代码 gaSVMcgForClass.m 源代码: 1. function [BestCVaccuracy,Bestc,Bestg,ga_option] = gaSVMcgForClass(train_label,train_data,ga_option) 2. % gaSVMcgForClass 3. 4. %% 5. % by faruto 6. %Email:patrick. QQ: http://blog.sina.com.cn/faruto BNU 7. %last modified
8. 9. %% 若转载请注明: 10. % faruto and liyang , LIBSVM-farutoUltimateVersion11. % a toolbox with implements for support vector machines based on libsvm, 2009. 12. % 13. % Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for 14. % support vector machines, 2001. Software available at 15. % http://www.csie.ntu.edu.tw/~cjlin/libsvm 16. 17. %% 参数初始化 18. if nargin == 2 19. ga_option = struct('maxgen',200,'sizepop',20,'ggap',0.9,... 20. 'cbound',[0,100],'gbound',[0,1000],'v',5); 21. end 22. % maxgen:最大的进化代数,默认为 200,一般取值范围为[100,500] 23. % sizepop:种群最大数量,默认为 20,一般取值范围为[20,100] 24. % cbound = [cmin,cmax],参数 c 的变化范围,默认为(0,100] 25. % gbound = [gmin,gmax],参数 g 的变化范围,默认为[0,1000] 26. % v:SVM Cross Validation 参数,默认为 5 27. 28. %% 29. MAXGEN = ga_option. 30. NIND = ga_option. 31. NVAR = 2; 32. PRECI = 20; 33. GGAP = ga_option. 34. trace = zeros(MAXGEN,2); 35. 36. FieldID = ... 37. [rep([PRECI],[1,NVAR]);[ga_option.cbound(1),ga_option.gbound(1);ga_ option.cbound(2),ga_option.gbound(2)]; ... 38. [1,1;0,0;0,1;1,1]]; 39. 40. Chrom = crtbp(NIND,NVAR*PRECI); 41. 42. gen = 1; 43. v = ga_option.v; 44. BestCVaccuracy = 0; 45. Bestc = 0; 46. Bestg = 0; 47. %% 48. cg = bs2rv(Chrom,FieldID); 49. 50. for nind = 1:NIND 51. cmd = ['-v ',num2str(v),' -c ',num2str(cg(nind,1)),' -g ',num2str(cg(nind,2))];52. ObjV(nind,1) = svmtrain(train_label,train_data,cmd); 53. end 54. [BestCVaccuracy,I] = max(ObjV); 55. Bestc = cg(I,1); 56. Bestg = cg(I,2); 57. 58. %% 59. while 1 60. % for gen = 1:MAXGEN 61. FitnV = ranking(-ObjV); 62. 63. SelCh = select('sus',Chrom,FitnV,GGAP); 64. SelCh = recombin('xovsp',SelCh,0.7); 65. SelCh = mut(SelCh); 66. 67. cg = bs2rv(SelCh,FieldID); 68. for nind = 1:size(SelCh,1) 69. cmd = ['-v ',num2str(v),' -c ',num2str(cg(nind,1)),' -g ',num2str(cg(nind,2))]; 70. ObjVSel(nind,1) = svmtrain(train_label,train_data,cmd); 71. end 72. 73. [Chrom,ObjV] = reins(Chrom,SelCh,1,1,ObjV,ObjVSel); 74. 75. if max(ObjV) &= 50 76. 77. end 78. 79. [NewBestCVaccuracy,I] = max(ObjV); 80. cg_temp = bs2rv(Chrom,FieldID); 81. temp_NewBestCVaccuracy = NewBestCV 82. 83. if NewBestCVaccuracy & BestCVaccuracy 84. BestCVaccuracy = NewBestCV 85. Bestc = cg_temp(I,1); 86. Bestg = cg_temp(I,2); 87. end 88. 89. if abs( NewBestCVaccuracy-BestCVaccuracy ) &= 10^(-2) && ... 90. cg_temp(I,1) & Bestc 91. BestCVaccuracy = NewBestCV 92. Bestc = cg_temp(I,1); 93. Bestg = cg_temp(I,2); 94. end95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133.trace(gen,1) = max(ObjV); trace(gen,2) = sum(ObjV)/length(ObjV); gen = gen+1; if gen &= MAXGEN/2 end if BestCVaccuracy &=80 && ... ( temp_NewBestCVaccuracy-BestCVaccuracy ) &= 10^(-2) end if gen == MAXGEN end end gen = gen -1; %% trace = round(trace*1; plot(trace(1:gen,1),'r*-','LineWidth',1.5); plot(trace(1:gen,2),'o-','LineWidth',1.5); legend('最佳适应度','平均适应度',3); xlabel('进化代数','FontSize',12); ylabel('适应度','FontSize',12); axis([0 gen 0 100]); line1 = '适应度曲线 Accuracy[GAmethod]'; line2 = ['(终止代数=', ... num2str(gen),',种群数量 pop=', ... num2str(NIND),')']; line3 = ['Best c=',num2str(Bestc),' g=',num2str(Bestg), ... ' CVAccuracy=',num2str(BestCVaccuracy),'%']; title({line1;line2;line3},'FontSize',12);
二参数遗传算法MATLAB源程序_计算机软件及应用_IT/计算机_专业资料。用遗传算法求...采用轮盘赌策略选择个体,以一点交叉算法和最优个体保存策略产生下一代种群。初始...具有多个选项的遗传算法工具可用于问题创建、适应度计算、选择、交叉和变异。 ...算法来寻找最佳起始点,然后利用优化工具箱或用 MATLAB 程序来进一 步寻找最优...遗传算法优化相关MATLAB算法实现_工学_高等教育_教育专区。MATLAB实现遗传算法,...遗传算法的做法是把问题参数编码为染色体,再利用迭代的 方式进行选择、 交叉以及...三个遗传算法matlab程序实例_IT/计算机_专业资料。遗传算法 matlab pid参数优化 ...(selectprob);%选择最优的概率 x=zeros(m,2); x(:,1)=[m:-1:1]';...遗传算法 MATLAB 代码实现本题中控制参数如下: (1)适应度函数形式 FitnV=...跟踪 每次迭代后的最优解和均值存放在 trace 中,在后续的作图中可选择调用出来...遗传算法经典MATLAB代码_计算机软件及应用_IT/计算机_...(4x)的最大值,其中 0&=x&=9 【分析】选择二...Term 结束函数时传递个 maxGenTerm 的参数,即遗传...遗传算法的MATLAB程序实例_计算机软件及应用_IT/...四 选择复制 选择或复制操作是决定哪些个体可以进入下...的整个空间,因此可以在一定程度上求得全局最优解。...(2) 具有多个选项的遗传算法工具可用于问题创建、适应度计算、选择、交叉和变异...算法来寻找最佳起始点,然后利用优化工具箱或用 MATLAB 程序来进一 步寻找最优...遗传算法的MATLAB程序实例_IT/计算机_专业资料。遗传算法遗传算法的程序实例 如求...的一个参数的编码放入新种群 的整个空间,因此可以在一定程度上求得全局最优解...工具箱实现对控制电机的 PID 进行参数优化, 利用 matlab 的仿真功能可以观察控制...利用遗传算法优化过程 1)根据遗传算法优缺点这里选择遗传代数为 100,种群大小为 ...
All rights reserved Powered by
www.tceic.com
copyright ©right 。文档资料库内容来自网络,如有侵犯请联系客服。libsvm-mat-加强工具箱介绍&by&faruto
libsvm-mat-加强工具箱介绍 by faruto
最终版本号:
libsvm-mat-2.89-3[farutoUltimateVersion2.0]
=====================================
libsvm-mat-加强工具箱介绍
由于libsvm的matlab版本的工具箱libsvm-mat并没有给出寻参的函数模块,而无论利用libsvm工具箱进行分类还是回归,参数的选取是十分重要的,鉴于此libsvm-mat-加强工具箱在libsvm-mat-2.89-3的基础上给出相应的辅助函数插件,方便用户来选取最佳的参数,该加强工具箱可以在MATLAB中文论坛上下载,现对该加强工具箱里主要的辅助函数插件的接口进行介绍,所有的源代码可以到MATLAB中文论坛下载并查看。
归一化函数:scaleForSVM
[train_scale,test_scale,ps]=
scaleForSVM(train_data,test_data,ymin,ymax)
train_data:训练集,格式要求与svmtrain相同。
test_data:测试集,格式要求与svmtrain相同。
ymin,ymax:归一化的范围,即将训练集和测试都归一化到[ymin,ymax],这两个参数可不输入,默认值为ymin=0,ymax=1,即默认将训练集和测试都归一化到[0,1]。
train_scale:归一化后的训练集。
test_scale:归一化后的测试集。
ps:归一化过程中的映射(方便反归一化使用)。
pca降维预处理函数:pcaForSVM
[train_pca,test_pca] =
pcaForSVM(train_data,test_data,threshold)
train_data:训练集,格式要求与svmtrain相同。
test_data:测试集,格式要求与svmtrain相同。
threshold:对原始变量的解释程度([0,100]之间的一个数),通过该阈值可以选取出主成分,该参数可以不输入,默认为90,即选取的主成分默认可以达到对原始变量达到90%的解释程度。
train_pca:进行pca降维预处理后的训练集。
test_pca:进行pca降维预处理后的测试集。
网格参数寻优函数(分类问题):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类似,这里不再赘述。
利用PSO参数寻优函数(分类问题):psoSVMcgForClass
[bestCVaccuracy,bestc,bestg,pso_option]=
psoSVMcgForClass(train_label,train,pso_option)
train_label:训练集的标签,格式要求与svmtrain相同。
train:训练集,格式要求与svmtrain相同。
pso_option:PSO中的一些参数设置,可不输入,有默认值,详细请看代码的帮助说明。
bestCVaccuracy:最终CV意义下的最佳分类准确率。
bestc:最佳的参数c。
bestg:最佳的参数g。
pso_option:记录PSO中的一些参数。
利用PSO参数寻优函数(回归问题):psoSVMcgForRegress
[bestCVmse,bestc,bestg,pso_option]=
psoSVMcgForRegress(train_label,train,pso_option)
其输入输出与psoSVMcgForClass类似,这里不再赘述。
利用GA参数寻优函数(分类问题):gaSVMcgForClass
[bestCVaccuracy,bestc,bestg,ga_option]=
gaSVMcgForClass(train_label,train,ga_option)
train_label:训练集的标签,格式要求与svmtrain相同。
train:训练集,格式要求与svmtrain相同。
ga_option:GA中的一些参数设置,可不输入,有默认值,详细请看代码的帮助说明。
bestCVaccuracy:最终CV意义下的最佳分类准确率。
bestc:最佳的参数c。
bestg:最佳的参数g。
ga_option:记录GA中的一些参数。
利用GA参数寻优函数(回归问题):gaSVMcgForRegress
[bestCVmse,bestc,bestg,ga_option]=
gaSVMcgForRegress(train_label,train,ga_option)
其输入输出与gaSVMcgForClass类似,这里不再赘述。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。网站已改版,请使用新地址访问:
gaSVMcgForRegress Matlab使用pso进行svm参 化寻优
238万源代码下载- www.pudn.com
&文件名称: gaSVMcgForRegress
& & & & &&]
&&所属分类:
&&开发工具: matlab
&&文件大小: 2 KB
&&上传时间:
&&下载次数: 0
&&提 供 者:
&详细说明:Matlab使用pso进行svm参数优化寻优-Matlab were svm parameter optimization using pso optimization
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&gaSVMcgForRegress.m
&输入关键字,在本站238万海量源码库中尽情搜索:只需一步,快速开始
扫一扫,访问微社区
查看: 4979|回复: 3|关注: 0
libsvm工具箱psoSVMcgForRegress
<h1 style="color:# 麦片财富积分
新手, 积分 18, 距离下一级还需 32 积分
关注者: 3
使用libsvm工具箱中的函数psoSVMcgForRegress,编写了点pso_SVM数据回归程序,结果显示预测很不理想,程序也不报错,有点无从下手的状态,拿出来大家探讨探讨
& &% 开始计时
%% ==================下载数据=======================
a=csvread('torque.csv');
%% ==================训练数据========================
% 训练数据提取,将行号为奇数的数据选出作为训练数据
n=floor(size(a,1)/2)+1;& &%floor向下取整,仅在总行数为奇数的情况试验过,偶数情况待修正
for i=1:n
& & X(i,1)=a(i+i-1,1);
& & Y(i,1)=a(i+i-1,2);
end
%% =====================测试数据=====================
n=n-1; %将行号是偶数的数据选出作为测试数据
for i=1:n& &
& & Xt(i,1)=a(i+i,1);
& & Yt(i,1)=a(i+i,2);
end
%% =====================数据归一化=====================
[Ym,ps] = mapminmax(Y',);
Ym=Ym';
[Xm,ps] = mapminmax(X',);
Xm=Xm';
[Ytm,ps] = mapminmax(Yt',);
Ytm=Ytm';
p=&&% 保存下来留作反归一化
[Xtm,ps] = mapminmax(Xt',);
Xtm=Xtm';
%% =====================参数寻优=====================
[bestCVaccuracy,bestc,bestg]= psoSVMcgForRegress(Ym,Xm);
cmd = ['-c ', num2str(bestc), ' -g ', num2str(bestg) , ' -s 3 -p 0.4 -n 0.1'];
model = svmtrain(Ym, X, cmd);
%% =====================数据预测=====================
[predict,accuracy] = svmpredict(Ytm,Xt,model);
predict = mapminmax('reverse',predict,p);
%% =====================图像显示=====================
figure(2);
plot(predict,'ro:');&&
hold on
plot(Yt,'b+:');
text(3,13,'圆圈代表LSSVM预测值');
text(3,12,'加号代表有限元仿真值');
xlabel('时刻/ms');
ylabel('转矩/T');
%% ======================程序运行时间输出========================
tim=
disp(['耗时:',num2str(tim)]);
复制代码
16:25 上传
点击文件名下载附件
768 Bytes, 下载次数: 8085
解压一下就是csv数据
<h1 style="color:# 麦片财富积分
关注者: 3
静下心来一看,原来是归一化数据使用出了问题。。
<h1 style="color:# 麦片财富积分
关注者: 3
pennyzhuzhi朋友,数据行列需要转换(即使矩阵转置),问题应该就在这里,时间隔得有点远,记得不清了
<h1 style="color:# 麦片财富积分
cmd = ['-c ', num2str(bestc), ' -g ', num2str(bestg) , ' -s 3 -p 0.4 -n 0.1'];
这句话表示什么啊?
站长推荐 /3
筑起功能安全的堡垒 - 基于模型设计的软件开发
MATLAB中文论坛是全球最大的 MATLAB & Simulink 中文社区。用户免费注册会员后,即可下载代码,讨论问题,请教资深用户及结识书籍作者。立即注册加入我们吧!
MATLAB官方社交平台
MATLAB中文论坛微社区豆丁微信公众号
君,已阅读到文档的结尾了呢~~
广告剩余8秒
文档加载中
遗传算法选取最优参数MATLAB程序
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
遗传算法选取最优参数MATLAB程序
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口