利用GA优化SVM参数的一点小探索

上传人:s****a 文档编号:164512014 上传时间:2022-10-24 格式:DOCX 页数:6 大小:109.01KB
收藏 版权申诉 举报 下载
利用GA优化SVM参数的一点小探索_第1页
第1页 / 共6页
利用GA优化SVM参数的一点小探索_第2页
第2页 / 共6页
利用GA优化SVM参数的一点小探索_第3页
第3页 / 共6页
资源描述:

《利用GA优化SVM参数的一点小探索》由会员分享,可在线阅读,更多相关《利用GA优化SVM参数的一点小探索(6页珍藏版)》请在装配图网上搜索。

1、利用GA优化SVM参数的一点小探索利用 GA优化 SVM 参数的一点小探索其中 GA 代码思路,部分参照版主shiOlfg的进行的修改.部分参照雷英杰MATLAB遗传 算法工具箱与应用中算法自己实现.O(G_G)O.利用GA优化SVM中的c和gPS:图像好像有问题,怎么最佳适应度有的点会比平均的小?怪不管了.反正结 果图如此,晚上回来再看看怎么回事先这样.O(G_G)OPPS:那个啥bug找到了.已作了修改.S还做了一 点小优化从使用grid search优化SVM参 数到用PSO,再到用GA优化SVM参数,俺 总结出一个经验,把 C 控制住了.不能让 C太大!!!无论你用什么办法优化,在分

2、类准确率都达到最高的参数里,优先选 择C小的那组参数才是上策 当然只是我个人的一点小经验!o(n_n)o图:结果: 复制内容到剪贴板代码:bestc =7.7161bestg =2.7382 bestCVaccuarcy =98.8764Accuracy = 100% (89/89) (classification)Accuracy = 96.6292% (86/89) (classification)Elapsed time is 41.767334 seconds.代码:测试文件代码: 复制内容到剪贴板代码:% 清空环境clcclear%load wine;train = wine(1:3

3、0,:);wine(60:95,:);wine(131:153,:); train_label =wine_labels(1:30);wine_labels(60:95);wine_labels(131:153); test = wine(31:59,:);wine(96:130,:);wine(154:178,:); test_label =wine_labels(31:59);wine_labels(96:130);wine_labels(154:178);train,pstrain = mapminmax(train);pstrain.ymin = 0;pstrain.ymax = 1;

4、train,pstrain = mapminmax(train,pstrain);test,pstest = mapminmax(test);pstest.ymin = 0;pstest.ymax = 1;test,pstest = mapminmax(test,pstest);train = train;test = test;%tic;ga_option.maxgen = 200;ga_option.sizepop = 50; ga_option.pCrossover = 0.4;ga_option.pMutation = 0.01; ga_option.cbound = 0.1,100;

5、 ga_option.gbound = 0.01,1000;ga_option.v = 3; bestCVaccuarcy,bestc,bestg,ga_option = gaSVMcgForClass(train_label,train,ga_option);bestcbestg bestCVaccuarcy cmd = -c ,num2str(bestc), -g ,num2str(bestg); model = svmtrain(train_label,train,cmd);pretrain,trainacc = svmpredict(train_label,train,model);

6、pretest,testacc = svmpredict(test_label,test,model);toc;gaSVMcgForClass.m 代码复制内容到剪贴板代码:function bestCVaccuarcy,bestc,bestg,ga_option = gaSVMcgForClass(train_label,train,ga_option)% gaSVMcgForClass% by faruto% 2009.10.07% 参数初始化if nargin = 2 ga_option =struct(maxgen,100,sizepop,20,pCrossover,0.4,pMuta

7、tion,0.01, .cbound,0.1,100,gbound,0.01,1000,v,3);end% maxgen: 最大的进化代数 , 默认为 100, 一般取值范围为 100,500% sizepop: 种群最大数量 , 默认为 20, 一般取值范围为 20,100% pCrossover: 交叉概率 , 默认为 0.4, 一般取值范围为 0.4,0.99% pMutation: 变异概率 , 默认为 0.01, 一般取值范围为 0.0001,0.1% cbound = cmin,cmax, 参数 c 的变化范围 , 默认为 0.1,100% gbound = gmin,gmax,

8、参数 g 的变化范围 , 默认为 0.01,1000% v:SVM Cross Validation 参数 , 默认为 3c_len_chromosome = ceil(log2(ga_option.cbound(2)-ga_option.cbound(1)*100);g_len_chromosome = ceil(log2(ga_option.gbound(2)-ga_option.gbound(1)*100); len_chromosome = c_len_chromosome+g_len_chromosome;% 将种群信息定义为一个结构体 individuals=struct(fitn

9、ess,zeros(1,ga_option.sizepop), .chromosome,zeros(ga_option.sizepop,len_chromosom e);% 每一代种群的平均适应度 avgfitness_gen = zeros(1,ga_option.maxgen);% 每一代种群的最佳适应度 bestfitness_gen = zeros(1,ga_option.maxgen);% 最佳适应度bestfitness = 0;% 适应度最好的染色体 bestchromosome = zeros(1,len_chromosome);% 初始化种群for i = 1:ga_opti

10、on.sizepop% 编码individuals.chromosome(i,:) = unidrnd(2,1,len_chromosome)-1;% 解码c,g = ga_decode(individuals.chromosome(i,:),ga_option.cbound,ga_option.gbou nd);% 计算初始适应度 (CV 准确率 )cmd = -v ,num2str(ga_option.v), -c ,num2str( c ), -g ,num2str( g );individuals.fitness(i) = svmtrain(train_label, train, cm

11、d); end% 找最佳的适应度和最好的染色体的位置 bestfitness,bestindex=max(individuals.fitness);% 最好的染色体bestchromosome = individuals.chromosome(bestindex,:);% 初始染色体的平均适应度avgfitness_gen(1) = sum(individuals.fitness)/ga_option.sizepop;% 迭代寻优for i=1:ga_option.maxgen% Selection Operatorindividuals = Selection(individuals,ga_

12、option);% Crossover Operatorindividuals = Crossover(individuals,ga_option);% Mutation Operatorindividuals = Mutation(individuals,ga_option);% 计算适应度for j = 1:ga_option.sizepop% 解码c,g = ga_decode(individuals.chromosome(j,:),ga_option.cbound,ga_option.gbou nd);% 计算初始适应度 (CV 准确率 )cmd = -v ,num2str(ga_op

13、tion.v), -c ,num2str( c ), -g ,num2str( g );individuals.fitness(j) = svmtrain(train_label, train, cmd); end% 找最佳的适应度和最好的染色体的位置 new_bestfitness,bestindex=max(individuals.fitness);% 最好的染色体new_bestchromosome = individuals.chromosome(bestindex,:);new_c,g = ga_decode(new_bestchromosome,ga_option.cbound,g

14、a_option.gbound);c,g = ga_decode(bestchromosome,ga_option.cbound,ga_option.gbound);if new_bestfitness = bestfitness & new_c bestfitnessbestfitness = new_bestfitness;bestchromosome = new_bestchromosome;end% 这一代染色体的最佳适应度 bestfitness_gen(i) = bestfitness;% 这一代染色体的平均适应度avgfitness_gen(i) = sum(individual

15、s.fitness)/ga_option.sizepop;end% 结果分析figure;hold on;plot(bestfitness_gen,r); plot(avgfitness_gen);legend(最佳适应度,平均适应度);title(适应度曲线,(终止代数二,num2str(ga_option.maxgen),种群数量 pop=,num2str(ga_option.sizepop),);xlabel(进化代数);ylabel(适应度);axis(0 ga_option.maxgen 0 100);grid on;bestc,bestg = ga_decode(bestchromosome,ga_option.cbound,ga_option.gbound); bestCVaccuarcy = bestfitness_gen(ga_option.maxgen);回头 libsvm-mat-faruto version 就又可以更新了. 嘿嘿

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!