- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PSOSVM.m
%function PSOSVM
%%%PSO优化SVM参数
%% 清空环境
clc
clear
% load wine;
% load wine_labels;
% traindata= [wine(1:30,:);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)];
% [traindata,pstrain] = mapminmax(traindata);%归一化到[0 1]范围.
% pstrain.ymin = 0;
% pstrain.ymax = 1;
% [traindata,pstrain] = mapminmax(traindata,pstrain);
% [test,pstest] = mapminmax(test);
% pstest.ymin = 0;
% pstest.ymax = 1;
% [test,pstest] = mapminmax(test,pstest);
% traindata = traindata;
% test = test;
load data;
?
%% 参数初始化
%粒子群算法中的两个参数
c1 = 1; % c1 belongs to [0,2]
c2 = 1; % c2 belongs to [0,2]
maxgen=50;?? % 进化次数?
sizepop=30;?? % 种群规模
popcmax=10^(2);
popcmin=10^(-1);
popgmax=10^(3);
popgmin=10^(-2);
k = 0.6; % k belongs to [0.1,1.0];
Vcmax = k*popcmax;
Vcmin = -Vcmax ;
Vgmax = k*popgmax;
Vgmin = -Vgmax ;
% SVM参数初始化?
v = 3;
%% 产生初始粒子和速度
for?i=1:sizepop
????% 随机产生种群
????pop(i,1) = (popcmax-popcmin)*rand+popcmin;??? % 初始种群
????pop(i,2) = (popgmax-popgmin)*rand+popgmin;
????V(i,1)=Vcmax*rands(1);? % 初始化速度
????V(i,2)=Vgmax*rands(1);
????% 计算初始适应度
????cmd = [-v ,num2str(v), -c ,num2str( pop(i,1) ), -g ,num2str( pop(i,2) )];
????fitness(i) = svmtrain(T, P, cmd);
?????
%???? ??? Error?using?== svmtrain
% Group must be a vector.
%
% Error in == PSO2SVM at 57
%???? fitness(i) = svmtrain(train_label, traindata, cmd);
????fitness(i) = -fitness(i);
end
% 找极值和极值点
[global_fitness bestindex]=min(fitness); % 全局极值
local_fitness=fitness;?? % 个体极值初始化
global_x=pop(bestindex,:);?? % 全局极值点
local_x=pop;??? % 个体极值点初始化
tic
%% 迭代寻优
for?i=1:maxgen
?????
????for?j=1:sizepop
?????????
????????%速度更新
????????wV = 0.9; % wV best belongs to [0.8,1.2]
????????V(j,:) = wV*V(j,:) + c1*rand*(local_x(j,:) - pop(j,:)) + c2*rand*(global_x - pop(j,:));
????????if?V(j,1) Vcmax
????????????V(j,1) = Vcmax;
????????end
????????if?V(j,1) Vcmin
????????
文档评论(0)