MATLAB bp神经网络预测代码

清除变量

%% 清楚变量
claer;
clc;

导入数据

变量个数较少可以自己输入变量,变量数目较大时建议采用读取Excel并保存成.mat的方法来导入数据

%% 读取.m数据(以data.mat为例)
load('data.mat')
load('data1.mat')
P = data(:,2:end); % 读取输入数据
T = data(:,1);     % 读取目标数据
[n,m] = size(P)    % 获取自变量的个数(n)和样本数量(m)
X = data1          % 读取需要预测的输入数据
[N,M] = size(P)    % 获取预测自变量的个数(n)和样本数量(m)

归一化数据处理

%% 对自变量进行归一化,消除量纲的影响
for j = 1:n                                      % 对输入数据归一化
    M = P(:,j);
    M_min = min(M);
    M_max = max(M);
    for i=1:5433
        p(i,j) = ((P(i,j)-M_min)/(M_max-M_min)); % 归一化公式之一
    end
end
clear i j M_min M_max M;                         % 消除中间变量
for j = 1:N                                      % 对预测的输入数据归一化
    M = X(:,j);
    M_min = min(M);
    M_max = max(M);
    for i=1:2599
        x(i,j) = ((X(i,j)-M_min)/(M_max-M_min));
    end
end
clear i j M_min M_max M;

设置神经网络训练数据和预测数据

p_train = p';      % 训练输入数据
t_train = T';      % 训练目标数据
x_test = x';       % 预测输入数据
net = newff(p_train,t_train,16,{'tansig','purelin'},'trainlm');  % 构建网络,tansig表示正切关系,purelin表示线性关系
net.trainParam.epochs=1000;         % 训练次数,这里设置为1000次
net.trainParam.lr=0.001;            % 学习速率,这里设置为0.01
net.trainParam.goal=0.00001;        % 训练目标最小误差,这里设置为0.00001
net=train(net,p_train,t_train);     % 开始训练网络

BP神经网络预测

for i=1:M
    y_tests(:,i)=sim(net,x_test(:,i));  % 用训练好的模型进行仿真
end
y = y_tests';                           % y为预测结果
Y = round(y);                           % 对预测结果进行四舍五入

有疑问或者数学建模技术交流

+QQ :1825912434

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值