matlab30个案例分析案例13-SVM神经网络中的参数优化.docx_第1页
matlab30个案例分析案例13-SVM神经网络中的参数优化.docx_第2页
matlab30个案例分析案例13-SVM神经网络中的参数优化.docx_第3页
matlab30个案例分析案例13-SVM神经网络中的参数优化.docx_第4页
matlab30个案例分析案例13-SVM神经网络中的参数优化.docx_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

% SVM神经网络中的参数优化-如何更好的提升分类器的性能 % 清空环境变量function chapter13_GAclose all;clear;clc;format compact;% 数据提取% 载入测试数据wine,其中包含的数据为classnumber = 3,wine:178*13的矩阵,wine_labes:178*1的列向量load chapter13_wine.mat;% 画出测试数据的box可视化图figure;boxplot(wine,orientation,horizontal,labels,categories);title(wine数据的box可视化图,FontSize,12);xlabel(属性值,FontSize,12);grid on;% 画出测试数据的分维可视化图figuresubplot(3,5,1);hold onfor run = 1:178 plot(run,wine_labels(run),*);endxlabel(样本,FontSize,10);ylabel(类别标签,FontSize,10);title(class,FontSize,10);for run = 2:14 subplot(3,5,run); hold on; str = attrib ,num2str(run-1); for i = 1:178 plot(i,wine(i,run-1),*); end xlabel(样本,FontSize,10); ylabel(属性值,FontSize,10); title(str,FontSize,10);end% 选定训练集和测试集% 将第一类的1-30,第二类的60-95,第三类的131-153做为训练集train_wine = wine(1:30,:);wine(60:95,:);wine(131:153,:);% 相应的训练集的标签也要分离出来train_wine_labels = wine_labels(1:30);wine_labels(60:95);wine_labels(131:153);% 将第一类的31-59,第二类的96-130,第三类的154-178做为测试集test_wine = wine(31:59,:);wine(96:130,:);wine(154:178,:);% 相应的测试集的标签也要分离出来test_wine_labels = wine_labels(31:59);wine_labels(96:130);wine_labels(154:178);% 数据预处理% 数据预处理,将训练集和测试集归一化到0,1区间mtrain,ntrain = size(train_wine);mtest,ntest = size(test_wine);dataset = train_wine;test_wine;% mapminmax为MATLAB自带的归一化函数dataset_scale,ps = mapminmax(dataset,0,1);dataset_scale = dataset_scale;train_wine = dataset_scale(1:mtrain,:);test_wine = dataset_scale( (mtrain+1):(mtrain+mtest),: );% 选择GA最佳的SVM参数c&g% GA的参数选项初始化ga_option.maxgen = 200;ga_option.sizepop = 20; ga_option.cbound = 0,100;ga_option.gbound = 0,100;ga_option.v = 5;ga_option.ggap = 0.9;bestacc,bestc,bestg = gaSVMcgForClass(train_wine_labels,train_wine,ga_option);% 打印选择结果disp(打印选择结果);str = sprintf( Best Cross Validation Accuracy = %g% Best c = %g Best g = %g,bestacc,bestc,bestg);disp(str);% 利用最佳的参数进行SVM网络训练cmd = -c ,num2str(bestc), -g ,num2str(bestg);model = svmtrain(train_wine_labels,train_wine,cmd);% SVM网络预测predict_label,accuracy = svmpredict(test_wine_labels,test_wine,model);% 打印测试集分类准确率total = length(test_wine_labels);right = sum(predict_label = test_wine_labels);disp(打印测试集分类准确率);str = sprintf( Accuracy = %g% (%d/%d),accuracy(1),right,total);disp(str);% 结果分析% 测试集的实际分类和预测分类图figure;hold on;plot(test_wine_labels,o);plot(predict_label,r*);xlabel(测试集样本,FontSize,12);ylabel(类别标签,FontSize,12);legend(实际测试集分类,预测测试集分类);title(测试集的实际分类和预测分类图,FontSize,12);grid on;snapnow;% 子函数 gaSVMcgForClass.mfunction BestCVaccuracy,Bestc,Bestg,ga_option = gaSVMcgForClass(train_label,train_data,ga_option)% gaSVMcgForClass% by faruto%Email: QQ:516667408 /faruto BNU%last modified 2010.01.17%Super Moderator % 若转载请注明:% faruto and liyang , LIBSVM-farutoUltimateVersion % a toolbox with implements for support vector machines based on libsvm, 2009. % Software available at % % Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for% support vector machines, 2001. Software available at% .tw/cjlin/libsvm% 参数初始化if nargin = 2 ga_option = struct(maxgen,200,sizepop,20,ggap,0.9,. cbound,0,100,gbound,0,1000,v,5);end% maxgen:最大的进化代数,默认为200,一般取值范围为100,500% sizepop:种群最大数量,默认为20,一般取值范围为20,100% cbound = cmin,cmax,参数c的变化范围,默认为(0,100% gbound = gmin,gmax,参数g的变化范围,默认为0,1000% v:SVM Cross Validation参数,默认为5%MAXGEN = ga_option.maxgen;NIND = ga_option.sizepop;NVAR = 2;PRECI = 20;GGAP = ga_option.ggap;trace = zeros(MAXGEN,2);FieldID = .rep(PRECI,1,NVAR);ga_option.cbound(1),ga_option.gbound(1);ga_option.cbound(2),ga_option.gbound(2); . 1,1;0,0;0,1;1,1;Chrom = crtbp(NIND,NVAR*PRECI);gen = 1;v = ga_option.v;BestCVaccuracy = 0;Bestc = 0;Bestg = 0;%cg = bs2rv(Chrom,FieldID);for nind = 1:NIND cmd = -v ,num2str(v), -c ,num2str(cg(nind,1), -g ,num2str(cg(nind,2); ObjV(nind,1) = svmtrain(train_label,train_data,cmd);endBestCVaccuracy,I = max(ObjV);Bestc = cg(I,1);Bestg = cg(I,2);for gen = 1:MAXGEN FitnV = ranking(-ObjV); SelCh = select(sus,Chrom,FitnV,GGAP); SelCh = recombin(xovsp,SelCh,0.7); SelCh = mut(SelCh); cg = bs2rv(SelCh,FieldID); for nind = 1:size(SelCh,1) cmd = -v ,num2str(v), -c ,num2str(cg(nind,1), -g ,num2str(cg(nind,2); ObjVSel(nind,1) = svmtrain(train_label,train_data,cmd); end Chrom,ObjV = reins(Chrom,SelCh,1,1,ObjV,ObjVSel); if max(ObjV) BestCVaccuracy BestCVaccuracy = NewBestCVaccuracy; Bestc = cg_temp(I,1); Bestg = cg_temp(I,2); end if abs( NewBestCVaccuracy-BestCVaccuracy ) = 10(-2) & . cg_temp(I,1) Bestc BestCVaccuracy = NewBestCVaccuracy; Bestc = cg_temp(I,1); Bestg = cg_temp(I,2); end trace(gen,1) = max(ObjV); trace(gen,2) = sum(ObjV)/length(ObjV); end%figure;hold on;trace = round(trace*10000)/10000;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);axi

温馨提示

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

评论

0/150

提交评论