✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

针对传统BP神经网络存在学习效率低、收敛速度慢和容易陷入局部极小值的问题,提出一种基于改进的PSO来优化BP神经网络的方法。实验结果表明,该方法较好地解决了传统BP神经网络易陷入局部极小值的问题,提高了算法的收敛速度和稳定性。

⛄ 部分代码

%%
warning('off');
% Data Loading
clear;
netdata=load('fortest2.mat');
netdata=netdata.FinalReady;
% Data and Label
network=netdata(:,1:end-1);
netlbl=netdata(:,end);
% Var Change
inputs = network;
targets = netlbl;
% Dim Size
InputNum = size(inputs,2);
OutputNum = size(targets,2);
pr = [-1 1];
PR = repmat(pr,InputNum,1);
% NN Structure (log-sigmoid transfer function)

NH=5;     % Number of Hidden Layers (more better)

Network1 = newff(PR,[NH OutputNum],{'tansig' 'tansig'});
% Train with PSO on Networks Weights
Network1 = TrainPSO(Network1,inputs,targets);
view(Network1)
% Generating Outputs from Our PSO + NN Network Model
outputs = Network1(inputs');
outputs=outputs';
% Size
sizenet=size(network);
sizenet=sizenet(1,1);
% Outputs Error
MSE=mse(outputs);
% Bias Output for Confusion Matrix
outputs=outputs-(MSE*0.1)/2;
% Detecting Mislabeled Data
for i=1 : 50
            if outputs(i) <= 0.9
               out(i)=0;
        elseif outputs(i) >= 0.9
               out(i)=1;            end;end;
for i=51 : 100
            if outputs(i) <= 0.9
               out(i)=0;
        elseif outputs(i) >= 0.9
               out(i)=2;            end;end;
for i=101 : 150
            if outputs(i) <= 0.9
               out(i)=0;
        elseif outputs(i) >= 0.9
               out(i)=3;            end;end;
for i=151 : 200
            if outputs(i) <= 0.9
               out(i)=0;
        elseif outputs(i) >= 0.9
               out(i)=4;            end;end;
for i=201 : 250
            if outputs(i) <= 0.9
               out(i)=0;
        elseif outputs(i) >= 0.9
               out(i)=5;            end;end;
for i=251 : 300
            if outputs(i) <= 0.9
               out(i)=0;
        elseif outputs(i) >= 0.9
               out(i)=6;            end;end;
       out1=single(out');
% PSO Final Accuracy
       psomse=mse(out1,targets);
       MSEError=abs(mse(targets)-mse(out1));
       cnt=0;
       for i=1:sizenet
           if out1(i)~= targets(i)
               cnt=cnt+1;
           end;
       end;
      fin=cnt*100/ sizenet;
      psoacc=(100-fin)-psomse;

⛄ 运行结果

分类预测 | MATLAB实现PSO-BP多特征分类预测(粒子群优化BP神经网络分类预测,含混淆矩阵图、分类图)_神经网络

⛄ 参考文献

[1]杨宝华, 叶生波, 戴前颖,等. 一种基于粒子群算法优化BP神经网络的茶叶存储时间分类方法:, 2019.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料