• 大小: 2.07MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-09
  • 语言: Matlab
  • 标签: LSSVM  PSO  

资源简介

PSO和LSSVM结合代码,亲测可用,并含有LSSVM工具箱,安装于matlab中即可运行。

资源截图

代码片段和文件信息

function [bestCVaccuarcybestcbestgpso_option] = psoLSSVMcgForClass(trainsettrainset_labelYcpso_option)
% psoLSSVMcgForClass 
%by Tangxiaobiao  QQ 444646122 blog.sina.com.cn/lssvm
% 2010.05.31

%% 参数初始化
if nargin == 3
    pso_option = struct(‘c1‘1.5‘c2‘1.7‘maxgen‘100‘sizepop‘20 ...
        ‘k‘0.6‘wV‘1‘wP‘1‘v‘5 ...
        ‘popcmax‘10^2‘popcmin‘10^(-1)‘popgmax‘10^3‘popgmin‘10^(-2));
end
% c1:初始为1.5pso参数局部搜索能力
% c2:初始为1.7pso参数全局搜索能力
% maxgen:初始为200最大进化数量
% sizepop:初始为20种群最大数量
% k:初始为0.6(k belongs to [0.11.0])速率和x的关系(V = kX)
% wV:初始为1(wV best belongs to [0.81.2])速率更新公式中速度前面的弹性系数
% wP:初始为1种群更新公式中速度前面的弹性系数
% v:初始为3SVM Cross Validation参数
% popcmax:初始为100SVM 参数c的变化的最大值.
% popcmin:初始为0.1SVM 参数c的变化的最小值.
% popgmax:初始为1000SVM 参数g的变化的最大值.
% popgmin:初始为0.01SVM 参数c的变化的最小值.
Yc=Yc;
Vcmax = pso_option.k*pso_option.popcmax;
Vcmin = -Vcmax ;
Vgmax = pso_option.k*pso_option.popgmax;
Vgmin = -Vgmax ;

eps = 10^(-3);
[Yccodebookold_codebook] = code(trainset_label‘code_MOC‘);
%% 产生初始粒子和速度
for i=1:pso_option.sizepop
    
    % 随机产生种群和速度
    pop(i1) = (pso_option.popcmax-pso_option.popcmin)*rand+pso_option.popcmin;
    pop(i2) = (pso_option.popgmax-pso_option.popgmin)*rand+pso_option.popgmin;
    V(i1)=Vcmax*rands(1);
    V(i2)=Vgmax*rands(1);
    
    % 计算初始适应度
     gam=pop(i1);sig2=pop(i2);
     model=initlssvm(trainsetYc‘c‘gamsig2‘RBF_kernel‘);
     model=trainlssvm(model);
     Yd0=simlssvm(modeltrainset);
     predict_label = code(Yd0old_codebook[]codebook);%解码分类结果
     testnum=size(trainset_label1);
     right=sum(trainset_label==predict_label);
     n = sum(sum(trainset_label~=predict_label));
     fitness(i) = (1-n/prod(size(trainset_label)))*100;
    fitness(i) = -fitness(i);
end

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

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

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

%% 迭代寻优
for i=1:pso_option.maxgen
    
    for j=1:pso_option.sizepop
        
        %速度更新
        V(j:) = pso_option.wV*V(j:) + pso_option.c1*rand*(local_x(j:) - pop(j:)) + pso_option.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
        
        %种群更新
        pop(j:)=pop(j:) + pso_option.wP*V(j:);
        if pop(j1) > pso_option.popcmax
            pop(j1) = pso_option.popcmax;
        end
        if pop(j1) < pso_option.popcmin
            pop(j1) = pso_option.popcmin;
        end
        if pop(j2) > pso_option.popgmax
            pop(j2) = pso_option.popgmax;
        end
        if pop(j2) < pso_option.popgmin
            pop(j2) = pso_option.popgmin;

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

     文件       5829  2019-01-22 11:03  PSO_LSSVM\psoLSSVMcgForClass.m

     文件       2717  2019-01-22 11:08  PSO_LSSVM\PSO_LSSVM.m

     文件       5423  2015-06-22 09:51  PSO_LSSVM\winedata.mat

     文件    2165517  2019-01-22 10:56  LS_SVM.zip

     目录          0  2019-01-22 10:38  PSO_LSSVM

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

              2179486                    5


评论

共有 条评论