• 大小: 3KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-27
  • 语言: 其他
  • 标签: psolssvm  

资源简介

运用pso 方法优化lssvm 的sig2 gam 两参数 对数据进行回归预测

资源截图

代码片段和文件信息

%%==================清空环境=============

clc
clear

%%导入训练数据和测试数据
load data1.mat

%其中train_data test_data分别为训练集和测试集
%train_result test_result为训练结果和测试结果

%%数据归一化

%%归一化方法1(利用libsvm工具箱函数归一化)
[train_xtest_x]=scaleForSVM(train_datatest_data01)
[train_ytest_ypstrain1]=scaleForSVM(train_resulttest_result01)


%%归一化方法2(利用svm自带mapminmax函数归一化)
%[train_data pstrain0] = mapminmax(train‘01);
%[test_data] = mapminmax(‘apply‘test‘pstrain0);
%[train_resultpstrain1] = mapminmax(train_out01);
%[test_result] = mapminmax(‘apply‘test_outpstrain1);

%train_data = train_data‘
%train_result=train_result‘
%test_data = test_data‘


%% 参数初始化

%粒子群算法中的两个参数
c1 = 1.5; % c1 belongs to [02] c1:初始为1.5pso参数局部搜索能力
c2 = 1.5; % c2 belongs to [02] c2:初始为1.7pso参数全局搜索能力

maxgen=300; % 进化次数 
sizepop=30; % 种群规模

popcmax=10^(3); % popcmax:初始为1000SVM 参数c的变化的最大值.
popcmin=10^(-1); % popcmin:初始为0.1SVM 参数c的变化的最小值.
popgmax=10^(2); % popgmax:初始为1000SVM 参数g的变化的最大值
popgmin=10^(-1); % popgmin:初始为0.01SVM 参数c的变化的最小值.
k = 0.5; % k belongs to [0.11.0];
Vcmax = k*popcmax;%参数 c 迭代速度最大值
Vcmin = -Vcmax ;
Vgmax = k*popgmax;%参数 g 迭代速度最大值
Vgmin = -Vgmax ; 

eps = 10^(-7);

%%定义lssvm相关参数

type = ‘function estimation‘; 
kernel = ‘RBF_kernel‘;
proprecess=‘original‘

%% 产生初始粒子和速度
for i=1:sizepop

% 随机产生种群
pop(i1) = (popcmax-popcmin)*rand(11)+popcmin ; % 初始种群
pop(i2) = (popgmax-popgmin)*rand(11)+popgmin;
V(i1)=Vcmax*rands(11); % 初始化速度
V(i2)=Vgmax*rands(11);

% 计算初始适应度
gam = pop(i1)
sig2 = pop(i2)
model=initlssvm(train_xtrain_ytypegamsig2kernelproprecess)
model=trainlssvm(model) % 训练svm模型
%求出训练集和测试集的预测值
[ptrainztmodel]=simlssvm(modeltrain_x);

%预测数据反归一化
% train_predict=mapminmax(‘reverse‘train_predict_ypstrain1)%训练集预测值

%计算均方差
trainmse=sum((ptrain-train_y).^2)/length(train_y)

fitness(i)=trainmse%以训练集的预测值计算的均方差为适应度值
end

% 找极值和极值点
[global_fitness bestindex]=min(fitness) % 全局极值
local_fitness=fitness % 个体极值初始化 

global_x=pop(bestindex:) % 全局极值点
local_x=pop % 个体极值点初始化

% 每一代种群的平均适应度
avgfitness_gen = zeros(1maxgen);

tic

%% 迭代寻优
for i=1:maxgen

for j=1:sizepop

%速度更新
wV = 1; % wV best belongs to [0.81.2]为速率更新公式中速度前面的弹性系数
V(j:) = wV*V(j:) + c1*rand*(local_x(j:) - pop(j:)) + c2*rand*(global_x - pop(j:));
if V(j1) > Vcmax %以下几个不等式是为了限定速度在最大最小之间
V(j1) = Vcmax;
end
if V(j1) < Vcmin
V(j1) = Vcmin;
end
if V(j2) > Vgmax
V(j2) = Vgmax;
end
if V(j2) < Vgmin
V(j2) = Vgmin; %以上几个不等式是为了限定速度在最大最小之间
end

%种群更新
wP = 1; % wP:初始为1种群更新公式中速度前面的弹性系数
pop(j:)=pop(j:)+wP*V(j:);
if pop(j1) > popcmax %以下几个不等式是为了限定 c 在最大最小之间
pop(j1) = popcmax;
end
if pop(j1) < popcmin
pop(j1) = popcmin;
end
if pop(j2) > popgmax %以下几个不等式是为了限定 g 在最大最小之间
pop(j2) = popgmax;
end
if pop(j2) < popgmin
pop(j2) = popgmin;
end

% 自适应粒子变异
if rand>0.5
k=ceil(2*rand);%ceil 是向离它最近的大整数圆整

if k == 1
pop(jk) = (20-1)*rand+1;
end
if k == 2
pop(jk) = (popgmax-popgmin

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5329  2012-12-24 15:42  psolssvm.m

     文件       1032  2012-12-17 09:37  data1.mat

----------- ---------  ---------- -----  ----

                 6361                    2


评论

共有 条评论

相关资源