加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

用GA优化SVM的参数c和gamma

(2013-05-28 20:44:19)
分类: matlab的那点事

clear
close all
load testData;
load trainData;

%选择的训练样本是7个种类,每类有7幅图片
train = [TrainData(1:7,:);TrainData(8:14,:);TrainData(15:21,:);TrainData(22:28,:);TrainData      (29:35,:);TrainData(36:42,:);TrainData(43:49,:)];
train_labels = [trainLabel(1:7,:);trainLabel(8:14,:);trainLabel(15:21,:);trainLabel(22:28,:);trainLabel(29:35,:);trainLabel(36:42,:);trainLabel(43:49,:)];

%选择的测试样本还是这7个种类,每类有2幅图片

test = [TestData(1:2,:);TestData(3:4,:);TestData(5:6,:);TestData(7:8,:);TestData(9:10,:);TestData(11:12,:);TestData(13:14,:)];
test_labels = [testLabel(1:2,:);testLabel(3:4,:);testLabel(5:6,:);testLabel(7:8,:);testLabel(9:10,:);testLabel(11:12,:);testLabel(13:14,:)];

[train,pstrain]=mapminmax(train');
pstrain.ymin=0;
pstrain.ymax=1;
[train,pstrain]=mapminmax(train,pstrain);

[test,pstest]=mapminmax(test');
pstest.ymin=0;
petest.ymax=1;
[test,pstest]=mapminmax(test,pstest);

train=train';
test=test';

 %对于分类问题利用GA 来进行参数优化(c,g),效果比较好
 ga_option.maxgen = 200;% maxgen:最大的进化代数,默认为100,一般取值范围为[100,500]
 ga_option.sizepop = 50;% sizepop:种群最大数量,默认为20,一般取值范围为[20,100]
 ga_option.ggap = 0.4;%0交叉概率,默认为0.4,一般取值范围为[0.4,0.99]
 ga_option.cbound = [0.1,1000];%参数c的变化范围,默认为[0.1,100]
 ga_option.gbound = [0.001,100];%[参数g的变化范围,默认为[0.01,1000]
 ga_option.v = 7;
 [bestaccuracy2,bestc2,bestg2,ga_option] = gaSVMcgForClass(train_labels,train,ga_option)
cmd2= ['-c ',num2str(bestc2),' -g ',num2str(bestg2)];
model2 = svmtrain(train_labels, train,cmd2);
[ptrain_label2,train_accuracy2]=svmpredict(train_labels, train, model2);
[ptest_label2, test_accuracy2] = svmpredict(test_labels, test, model2);

 

得到的结果图

 http://s5/mw690/915bf3edgddc6b8c68e24&690

http://s11/mw690/915bf3edgddc6b8dfc9aa&690

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有