用matlab实现bp算法,对样本进行预测
发布网友
发布时间:2022-04-19 09:49
我来回答
共1个回答
热心网友
时间:2023-09-01 00:00
close all ;
clear ;
echo on ;
clc ;
% NEWFF——生成一个新的前向神经网络
% TRAIN——对 BP 神经网络进行训练
% SIM——对 BP 神经网络进行仿真
pause
% 敲任意键开始
clc
% 定义训练样本
% P 为输入矢量
p=[ ];
% T 为目标矢量
t= [];
%训练样本的归一化
for i=1:(训练样本的指标数)
P(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));
end
pause
clc
% 创建一个新的前向神经网络
net=newff(minmax(P),[15,2],{'tansig','purelin'},'traingda'); %这些参数要自己设置
% 当前输入层权值和阈值
inputWeights=net.IW{1,1};
inputbias=net.b{1} ;
% 当前网络层权值和阈值
layerWeights=net.LW{2,1} ;
layerbias=net.b{2} ;
pause
clc
% 设置训练参数 也要自己设置
net.trainParam.show = 50;
net.trainParam.lr = 0.05;
%net.trainParam.mc = 0.9; % 附加动量因子
net.trainParam.epochs =5000;
net.trainParam.goal = 1e-4;
pause
clc
% 调用 TRAINGDM 算法训练 BP 网络
[net,tr]=train(net,P,t);
pause
clc
% 对 BP 网络进行仿真
p_test=[];
for i=1:6
P_test(i,:)=(p_test(i,:)-min(p_test(i,:)))/(max(p_test(i,:))-min(p_test(i,:)));
end
t_test=[];
A = sim(net,P_test)
% 计算仿真误差
E = t - A
error=mse(E)
pause
clc
echo off
%反归一化
for i=1:2
predict(i,:)=A(i,:)*(max(t(i,:))-min(t(i,:)))+ min(t(i,:));
end
predict %即仿真结果
pause