使用BP神经网络、RBF神经网络以及PSO优化的RBF神经网络对数据进行预测(Matlab代码实现)
创始人
2024-01-30 11:49:24
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.

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...