使用BP神经网络、RBF神经网络以及PSO优化的RBF神经网络对数据进行预测(Matlab代码实现)

 🍒🍒🍒欢迎关注🌈🌈🌈

📝个人主页:我爱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:popcount
    pop(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);

📜📢🌈参考文献🌈📢📜

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

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

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用BP神经网络进行数据预测BP神经网络是一种传统的前向反馈神经网络,通过不断调整网络的连接权值和阈值,来建立输入和输出之间的映射关系。其训练过程包括前向传播和反向传播两个阶段,前向传播将输入信号逐层传递,直至输出层产生输出结果,反向传播则通过计算误差梯度来调整权重和阈值。利用BP神经网络进行数据预测,首先需要进行网络的构建和训练,然后利用训练好的网络对输入数据进行预测,得到对应的输出结果。 使用RBF神经网络进行数据预测RBF神经网络是一种基于径向基函数的神经网络,其输入层到隐层的连接采用高斯函数作为激活函数,而隐层到输出层的连接采用线性函数。RBF神经网络的训练过程包括确定隐层的中心点、调整中心点的位置和确定各个隐层神经元的半径。通过训练好的RBF神经网络进行数据预测时,需要首先根据输入数据计算得到隐层的输出,然后利用线性函数计算输出层的结果。 使用PSO优化RBF神经网络进行数据预测PSO(粒子群优化)是一种群体智能优化算法,通过模拟鸟群的行为,自动搜索最优解。将PSO算法与RBF神经网络相结合,可以充分利用PSO的全局搜索能力来优化RBF神经网络的参数。在使用PSO优化RBF神经网络进行数据预测时,首先需要在PSO算法中设置好适应度函数和参数范围,然后通过PSO算法找到最优的RBF神经网络参数。最后再利用优化后的RBF神经网络对输入数据进行预测,得到对应的输出结果。 这三种方法在数据预测中都有各自的优缺点,具体应用需要根据实际情况来选择合适的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值