精华内容
下载资源
问答
  • matlab环境下使用PSO算法对SVM多分类器的参数进行优化的案例,代码有详细的注释,另有一篇博客对算法的大致过程有介绍.
  • 利用粒子群优化算法来寻找svm中的最有参数,达到最优解
  • PSO优化SVM

    2011-10-19 14:19:40
    PSO优化SVM的matlab程序,PSO优化SVM的matlab程序
  • PSO优化SVM算法,用于模拟电路故障诊断的分类
  • PSO优化SVM参数

    热门讨论 2012-10-06 09:37:00
    简单的PSO算法用来进行参数寻优,从而优化SVM的惩罚参数c和核参数g
  • phog方法提取图像特征,svm支持向量机进行分类,分别有GA遗传算法和PSO粒子群优化算法进行寻优。
  • pso_svm_psosvm_SVM_电路故障诊断_PSO优化SVM_PSO-SVM.zip
  • PSO优化SVM参数.rar

    2020-07-06 17:18:23
    SVM使用的是lib-svm工具箱,LIBSVM 是台湾大学林智仁(Lin Chih-Jen)副教授等开发设计的一个简单、易于使用和快速有效的 SVM 模式识别与回归的软件包,它不仅提供了编译好的可在 Windows 系列系统的执行文件,还提供...
  • pso_svm_psosvm_SVM_电路故障诊断_PSO优化SVM_PSO-SVM_源码.zip
  • 利用PSO优化SVM参数的一点小探索

    千次阅读 2020-12-08 18:18:15
    其中PSO代码思路,参照版主 shi01fg的进行的修改..O(∩_∩)O.============利用PSO优化SVM中的c和g图:结果:Elapsed time is 64.799304 seconds.bestc =45.3915bestg =0.0100bestCVaccuarcy =97.7528Accuracy = 97.7528...

    其中PSO代码思路,参照版主 shi01fg

    的进行的修改..O(∩_∩)O.

    ============

    利用PSO优化SVM中的c和g

    图:

    结果:

    Elapsed time is 64.799304 seconds.

    bestc =

    45.3915

    bestg =

    0.0100

    bestCVaccuarcy =

    97.7528

    Accuracy = 97.7528% (87/89) (classification)

    trainacc =

    97.7528

    0.0225

    0.9633

    Accuracy = 93.2584% (83/89) (classification)

    testacc =

    93.2584

    0.0674

    0.9007

    代码:

    %% 清空环境

    clc

    clear

    load wine;

    train = [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)];

    [train,pstrain] = mapminmax(train');

    pstrain.ymin = 0;

    pstrain.ymax = 1;

    [train,pstrain] = mapminmax(train,pstrain);

    [test,pstest] = mapminmax(test');

    pstest.ymin = 0;

    pstest.ymax = 1;

    [test,pstest] = mapminmax(test,pstest);

    train = train';

    test = test';

    %% 参数初始化

    %粒子群算法中的两个参数

    c1 = 1.6; % c1 belongs to [0,2]

    c2 = 1.5; % c2 belongs to [0,2]

    maxgen=300; %

    进化次数 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(train_label, train, 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

    V(j,1) = Vcmin;

    end

    if V(j,2) > Vgmax

    V(j,2) = Vgmax;

    end

    if V(j,2) < Vgmin

    V(j,2) = Vgmin;

    end

    %种群更新

    wP = 0.6;

    pop(j,:)=pop(j,:)+wP*V(j,:);

    if pop(j,1) > popcmax

    pop(j,1) = popcmax;

    end

    if pop(j,1) < popcmin

    pop(j,1) = popcmin;

    end

    if pop(j,2) > popgmax

    pop(j,2) = popgmax;

    end

    if pop(j,2) < popgmin

    展开全文
  • pso-svm python 代码 基于粒子群算法优化支持向量机
  • 简单易读的SVM负简单易读的SVM负荷预测实验,并包含PSO、改进PSO等多种方法简单易读的SVM负荷预测实验,并包含PSO、改进PSO等多种方法简单易读的SVM负荷预测实验,并包含PSO、改进PSO等多种方法荷预测实验,并包含...
  • 粒子群优化SVM的两个参数,利用数据做预测,数据代码都在压缩包里,可以直接运行。
  • % PSO寻找最佳的SVM参数c&g % 参数初始化 %粒子群算法中的两个参数 c1 = 0.5; % c1 belongs to [0,2] c2 = 0.5; % c2 belongs to [0,2] maxgen=200; % 进化次数 sizepop=50; % 种群规模 popcmax=10^(2); popcmin=...

    具体程序代码如下,主要问题就是不管我怎么调整参数,最终的预测结果都没有太大的变化,还请了解这两大算法的帮忙看看问题出在哪里了,十分感谢!

    tic;

    close all;

    clear;

    clc;

    format compact;

    load M2.mat    %载入数据

    % 提取数据

    N=length(M2)-36;

    train_tsx=zeros(N,36);

    for i=1:N

    train_tsx(i,:)=M2(i:i+35);

    Y(i)=M2(i+36);               %36个月代表货币周期,从历史数据来看,大致与短经济周期一样(3-4年)

    end

    train_ts=Y';

    %数据预处理,将原始数据进行归一化

    ts = train_ts';

    tsx = train_tsx';

    % mapminmax为matlab自带的映射函数

    % 对ts进行归一化

    [TS,TSps] = mapminmax(ts,0,1);

    % 对TS进行转置,以符合libsvm工具箱的数据格式要求

    TS = TS';

    % mapminmax为matlab自带的映射函数

    % 对tsx进行归一化

    [TSX,TSXps] = mapminmax(tsx,0,1);

    % 对TSX进行转置,以符合libsvm工具箱的数据格式要求

    TSX = TSX';

    % PSO寻找最佳的SVM参数c&g

    % 参数初始化

    %粒子群算法中的两个参数

    c1 = 0.5; % c1 belongs to [0,2]

    c2 = 0.5; % c2 belongs to [0,2]

    maxgen=200;   % 进化次数

    sizepop=50;   % 种群规模

    popcmax=10^(2);

    popcmin=10^(-1);

    popgmax=10^(3);

    popgmin=10^(-2);

    k = 0.5;       % k belongs to [0.1,1.0];

    Vcmax = 500;

    Vcmin = 1 ;

    Vgmax = 10;

    Vgmin = 0.1 ;

    % SVM参数初始化

    v = 5;

    % 产生初始粒子和速度

    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) ),' -s 3 -t 2 -p 0.01 '];

    fitness(i) = svmtrain(TS, TSX, cmd);

    fitness(i) = -fitness(i);

    end

    % 找极值和极值点

    [global_fitness, bestindex]=min(fitness); % 全局极值

    local_fitness=fitness;   % 个体极值初始化

    global_x=pop(bestindex,:);   % 全局极值点

    local_x=pop;    % 个体极值点初始化

    % 迭代寻优

    for i=1:maxgen

    for j=1:sizepop       %速度更新

    wV = 1;      % 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

    V(j,1) = Vcmin;

    end

    if V(j,2) > Vgmax

    V(j,2) = Vgmax;

    end

    if V(j,2) < Vgmin

    V(j,2) = Vgmin;

    end

    %种群更新

    wP = 0.5;

    pop(j,:)=pop(j,:)+wP*V(j,:);

    if pop(j,1) > popcmax

    pop(j,1) = popcmax;

    end

    if pop(j,1) < popcmin

    pop(j,1) = popcmin;

    end

    if pop(j,2) > popgmax

    pop(j,2) = popgmax;

    end

    if pop(j,2) < popgmin

    pop(j,2) = popgmin;

    end

    % 自适应粒子变异

    if rand>0.5

    k=ceil(2*rand);

    if k == 1

    pop(j,k) = (20-1)*rand+1;

    end

    if k == 2

    pop(j,k) = (popgmax-popgmin)*rand+popgmin;

    end

    end

    %适应度值

    cmd = ['-v ',num2str(v),' -c ',num2str( pop(j,1) ),' -g ',num2str( pop(j,2) ),' -s 3 -t 2 -p 0.01 '];

    fitness(j) = svmtrain(TS, TSX, cmd);

    fitness(j) = -fitness(j);

    end

    %个体最优更新

    if fitness(j) < local_fitness(j)

    local_x(j,:) = pop(j,:);

    local_fitness(j) = fitness(j);

    end

    %群体最优更新

    if fitness(j) < global_fitness

    global_x = pop(j,:);

    global_fitness = fitness(j);

    end

    fit_gen(i)=global_fitness;

    end

    toc

    bestc = global_x(1);

    bestg = global_x(2);

    bestmse = -fit_gen(maxgen);

    % 利用回归预测分析最佳的参数进行SVM训练

    cmd = ['-c ',num2str( bestc ),' -g ',num2str( bestg ),' -s 3 -t 2 -p 0.01 '];

    model = svmtrain(TS,TSX,cmd);

    % 进行SVM预测

    test_tsx1 = TS(163:198);

    test_tsx1=test_tsx1';

    [predict1,mse,detesvalue] = svmpredict(8.29,test_tsx1,model);

    test_ts1 = mapminmax('reverse',predict1',TSps);

    展开全文
  • 利用遗传算法和粒子群优化算法优化支持向量机
  • 同时为了解决支持向量机预测模型的参数选择问题,引入了粒子群优化算法进行参数优化,建立较优的PSO-SVM预测模型。通过MATLAB仿真实验计算,将PSO-SVM模型与单纯的SVM预测模型和灰色神经网络预测模型结果进行对比...
  • 粒子群算法优化支持向量机参数,文件中包含数据和结果图
  • pso-SVM)的MATLAB程序

    2018-11-01 20:20:21
    这是pso优化的支持向量机程序,主要用于各种数据的分类
  • 参考学习
  • 为了解决矿井涌水量预测难题,在Grid-Search_PSO优化SVM参数的基础上,采用SVM非线性回归预测法,对大海则煤矿1999~2008年7月份的矿井涌水量进行了预测。分析对比SVM回归预测法和ARIMA时间序列预测法预测结果的数据误差...
  • 用粒子群算法优化支持向量机的matlab程序,用于对股价、经济的预测作用,优化后预测精确
  • 针对网络流量的时变性和非平稳性特点,为提高网络流量预测精度,... SVM)参数编码成粒子位置串,并根据网络训练集的交叉验证误差最小作为参数优化目标,然后通过粒子间信息交流找到最优SVM参数,并引入“多子种群”机制
  • pso优化SVM参数,可运行。MATLAB实现
  • 粒子群算法优化支持向量机模型参数代码,代码包含注释和数据文件
  • 基于PSO优化SVM的储粮通风温度预测模型探究,倪凡,周晓光,本文选取河北某国家直属库冬季通风实验的实时监测数据,提出一种基于粒子群算法优化和支持向量机回归方法的储粮通风温度预测模型
  • 粒子群优化算法(Particle Swarm optimization
  •  % SVM径向基函数基宽sigma %% 初始化粒子群PSO种群位置 pop=[]; for i=1:sizepop pop1.C = unifrnd(popmin1,popmax1,1,1); % 均匀分布解 pop1.sigma = unifrnd(popmin2,popmax2,1,1); % 均匀分布解 pop = [pop; ...

    clc,clear,close all

    warning off

    tic

    load('traffic_double_10.mat')

    %% 构造训练样本和测试样本

    train_data =[];

    train_output_data = [];

    test_data=[];

    test_output_data=[];

    for i=1:10:length(traffic_label)

    train_data =[train_data; traffic(i:i+7,:)];

    train_output_data =[train_output_data; traffic_label(i:i+7,:)];

    test_data =[test_data; traffic(i+8:i+9,:)];

    test_output_data =[test_output_data; traffic_label(i+8:i+9,:)];

    end

    %% 归一化

    for i=1:size(train_data,2)  % 样本归一化

    minmax(i,1) = min(train_data(:,i));

    minmax(i,2) = max(train_data(:,i));

    if isequal(minmax(i,2),minmax(i,1))

    train_data(:,i) = ones(size(train_data,1),1);

    test_data(:,i) = ones(size(test_data,1),1);

    else

    train_data(:,i) = (minmax(i,2)-train_data(:,i))./(minmax(i,2)-minmax(i,1));

    test_data(:,i) = (minmax(i,2)-test_data(:,i))./(minmax(i,2)-minmax(i,1));

    end

    end

    %% 粒子群PSO算法参数设置

    maxgen = 10;    % 最大迭代次数

    sizepop = 5;    % 种群数量

    Vmax = 1;       % 粒子速度上限

    Vmin = -1;      % 粒子速度下限

    c1 = 1.4995;    % 学习因子1

    c2 = 1.4995;    % 学习因子2

    % 变量坐标取值范围

    nvar = 2;                      % 未知量数量

    popmin1 = 0.1;   popmax1 = 2;  % SVM惩罚系数C

    popmin2 = 0.1;   popmax2 = 2;  % SVM径向基函数基宽sigma

    %% 初始化粒子群PSO种群位置

    pop=[];

    for i=1:sizepop

    pop1.C = unifrnd(popmin1,popmax1,1,1);      % 均匀分布解

    pop1.sigma = unifrnd(popmin2,popmax2,1,1);  % 均匀分布解

    pop = [pop; pop1];

    % 适应度函数

    fitness(i) = fun2( pop(i,:),train_data,train_output_data , test_data, test_output_data);

    end

    clear pop1

    V = Vmax*rands(sizepop,2);         % 初始化速度

    [bestfitness,bR]= max(fitness);    % 亮度最高的保留

    zbest = pop(bR,:);                 % 全局最佳

    fitnesszbest = bestfitness;        % 全局最佳适应度值

    gbest = pop;                       % 个体最佳

    fitnessgbest = fitness;            % 个体最佳适应度值

    trace = zbest;                     % 记录最优的种群

    %% 粒子群PSO算法迭代寻优

    for i=1:maxgen

    disp(['Iteration ' num2str(i)]);

    % 计算适应度值

    for j=1:sizepop

    % 速度更新

    V(j,:) = V(j,:) + c1*rand*([gbest(j).C,gbest(j).sigma] - [pop(j).C,pop(j).sigma] ) +...

    c2*rand*([zbest.C,zbest.sigma] - [pop(j).C,pop(j).sigma] );

    V(j,find(V(j,:)>Vmax))=Vmax;  % 上限

    V(j,find(V(j,:)

    % 种群更新

    pop(j).C = pop(j).C + 0.5*V(j,1);

    pop(j).sigma = pop(j).sigma + 0.5*V(j,2);

    % pop个体取值范围约束

    if pop(j).C > popmax1     % 上限

    pop(j).C = popmax1 ;

    elseif pop(j).C < popmin1 % 下限

    pop(j).C = popmin1;

    end

    if pop(j).sigma > popmax2     % 上限

    pop(j).sigma = popmax2 ;

    elseif pop(j).sigma < popmin2 % 下限

    pop(j).sigma = popmin2;

    end

    fitness(j) = fun2( pop(j,:) ,train_data,train_output_data, test_data, test_output_data ); % 计算适应度值

    % 个体最优更新

    if fitness(j) > fitnessgbest(j)

    gbest(j,:) = pop(j,:);

    fitnessgbest(j) = fitness(j);

    end

    % 群体最优更新

    if fitness(j) > fitnesszbest

    zbest = pop(j,:);

    fitnesszbest = fitness(j);

    end

    end

    trace = [trace,zbest];           % 记录最优的种群

    fitness_iter(i) = fitnesszbest;  % 最优适应度值

    end

    time = toc;

    disp(['CPU计算时间 =  ' num2str(time)])

    % save PSO_iter_result.mat fitness_iter trace zbest gbest train_data train_output_data data0 data test_data test_output_data minmax

    %% 结果显示

    figure(1),

    plot(fitness_iter,'b.-','linewidth',2);grid on;

    xlabel('迭代次数');ylabel('适应度值');axis tight;

    % 计算适应度值

    [fitnessZ,predict_result]= fun_predict( zbest,train_data,train_output_data,test_data );

    disp(['最优惩罚因子C =  ' num2str(zbest.C)])

    disp(['最优径向基函数基宽sigma =  ' num2str(zbest.sigma)])

    figure(2)

    plot(train_output_data,'ro-')

    hold on

    plot(predict_result{1},'bo-')

    legend('训练样本实际分类标签','训练样本预测分类标签')

    figure(3)

    plot(test_output_data,'ro-')

    hold on

    plot(predict_result{2},'bo-')

    legend('测试样本实际分类标签','测试样本预测分类标签')

    展开全文
  • pso-SVM_PSO优化参数_psosvm_SVM优化matlab_svm优化_SVM_源码.zip

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 677
精华内容 270
关键字:

pso优化svm