使用BP神经网络、RBF神经网络以及PSO优化的RBF神经网络对数据进行预测(Matlab代码实现)
创始人
2024-04-09 18:41:47
0

 🍒🍒🍒欢迎关注🌈🌈🌈

📝个人主页:我爱Matlab


👍点赞➕评论➕收藏 == 养成习惯(一键三连)🌻🌻🌻

🍌希望大家多多支持🍓~一起加油 🤗

💬语录:将来的我一定会感谢现在奋斗的自己!

🍁🥬🕒摘要🕒🥬🍁

径向基函数神经网络(也称为RBF神经网络)是应用非常广泛的一类人工神经网络。在RBF神经网络建模中,其隐含层神经元的个数、相关参数(即中心点、宽度)、以及输出层权值对模型的性能具有重大的影响。如何构建一个合理的隐含层网络结构和最佳的网络参数,是RBF神经网络改进的难点。径向基神经网络作为一种前馈型神经网络,在模型预测、智能控制和模式识别等领域得到广泛应用。同样,当前RBF神经网络结构主要通过经验或凑试的方法确定,且结构一旦确定将不再调整,极大的降低了RBF神经网络的自适应能力。因此,如何在RBF神经网络参数优化的同时实现其结构的自适应调整,提高RBF神经网络的性能,提升其应用能力,是RBF神经网络设计及应用中亟待解决的难题。

数据采用的是(52,4)的shape,分为了训练集和测试集,对四个特征(由num=1,2,3,4参数控制)分别进行预测。最后会输出神经网络分别在训练集和测试集上的效果图,以及在训练集和测试集上的误差。

✨🔎⚡运行结果⚡🔎✨

 

 

 

 

 

 

 

💂♨️👨‍🎓Matlab代码👨‍🎓♨️💂

clc;
clear;
tic;
SamNum=48;                         %训练样本数
TargetSamNum=3;                   %测试样本数
InDim=1;                            %样本输入维数
UnitNum=2;                          %隐节点数
MaxEpoch=1200;                      %最大训练次数
num=2;%对应四个特征
%E0=0.2;                             %目标误差
gbesthistory=[];
% 根据目标函数获得样本输入输出(训练样本)
rand('state',sum(100*clock));
%NoiseVar=0.0005;
%Noise=NoiseVar*randn(1,SamNum);
load data
%归一化
data1=data';
data=mapminmax(data1,0,1);
data=data';%建立训练集测试集
x_train=[data(1:48,1).';data(1:48,2).';data(1:48,3).';data(1:48,4).'];
x_test=[data(2:49,num).'];
y_train=[data(49:51,1).';data(49:51,2).';data(49:51,3).';data(49:51,4).'];
y_test=[data(50:52,num).'];
SamIn=x_train;
SamOut=x_test;
%测试样本
TargetIn=y_train;
TargetOut=y_test;%粒子群算法中的两个参数
c1 = 1.49445;
c2 = 1.49445;
popcount=10;   %粒子数
poplength=6;  %粒子维数
Wstart=0.9;%初始惯性权值
Wend=0.2;%迭代次数最大时惯性权值
%个体和速度最大最小值
Vmax=1;
Vmin=-1;
popmax=4;
popmin=-4;
%粒子位置速度和最优值初始化for i=1:popcountpop(i,:)=rand(1,9);%初始化粒子位置V(i,:)=rand(1,9);%初始化粒子速度%计算粒子适应度值Center=pop(i,1:3);SP=pop(i,4:6); W=pop(i,7:9);Distance=dist(Center',SamIn);SPMat=repmat(SP',1,SamNum);%repmat具体作用UnitOut=radbas(Distance./SPMat);%径向基函数NetOut=W*UnitOut;%网络输出Error=SamOut-NetOut;%网络误差%SSE=sumsqr(Error);%fitness(i)=SSE;RMSE=sqrt(sumsqr(Error)/SamNum);fitness(i)=RMSE;%fitness(i)=fun(pop(i,:));
end

clear
clc
%创建训练样本输入集
load data;
%归一化
data1=data';
data=mapminmax(data1,0,1);
data=data';
num=2;%对应四个特征
%建立训练集测试集
x_train=[data(1:48,1).';data(1:48,2).';data(1:48,3).';data(1:48,4).'];
x_test=[data(49:51,1).';data(49:51,2).';data(49:51,3).';data(49:51,4).'];
y_train=[data(2:49,num).'];
y_test=[data(50:52,num).'];
%创建BP神经网络
%创建网络
net=newff(minmax(x_train),[4,1],{'tansig','purelin'},'trainlm');%隐层神经元个数,输出层神经元个数
%设置训练次数
net.trainParam.epochs = 100;
%设置收敛误差
net.trainParam.goal=0.001;
%训练网络
[net,tr]=train(net,x_train,y_train);
%在训练集和测试集上的表现
y_train_predict=sim(net,x_train);
y_test_predict=sim(net,x_test);
%作图 分别在训练集和测试集上
subplot(1,2,1)
plot(1:length(y_train_predict),y_train_predict,'*',1:length(y_train_predict),y_train,'o')
title('In Train data')
subplot(1,2,2)
plot(1:3,y_test_predict,'*',1:3,y_test,'o')
title('In Test data')
%求出误差 训练集和测试集
train_error=sum(abs(y_train_predict- y_train))/length(y_train);
test_error=sum(abs(y_test_predict- y_test))/length(y_test);

完整代码:使用BP神经网络、RBF神经网络以及PSO优化的RBF神经网络对数据进行预测

📜📢🌈参考文献🌈📢📜

[1]乔俊飞,韩红桂.RBF神经网络的结构动态优化设计[J].自动化学报,2010,36(06):865-872.

[2]周维华. RBF神经网络隐层结构与参数优化研究[D].华东理工大学,2014.

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...