【matlab】BP神经网络 回归预测

该文使用MATLAB进行多输入多输出的数据预处理,通过归一化处理输入和输出数据。然后建立一个BP神经网络模型,设定网络结构和训练参数,对数据进行训练。训练完成后,利用网络进行预测并反归一化输出结果,最后对比预测值与实际值,评估模型的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多输入多输出
data里面一行代表一个样本

%% 清空环境变量
clc
clear all
close all
%% 训练数据预测数据提取及归一化
%% 训练集/测试集产生
%一列为一个样本

data = xlsread('data.xlsx');
P_train = data(1:16,1:3)';
T_train = data(1:16,4:5)';
P_test = data(1:16,1:3)';
T_test = data(1:16,4:5)';

[inputn, ps_input] = mapminmax(P_train,0,1);%归一化
input_n = mapminmax('apply', P_test, ps_input);
[outputn, ps_target] = mapminmax(T_train,0,1);%归一化


%% BP网络训练
% %初始化网络结构
%确定隐含层节点个数
%采用经验公式hiddennum=sqrt(m+n)+a,m为输入层节点个数,n为输出层节点个数,a一般取为1-10之间的整数
setdemorandstream(pi)
net=newff(inputn,outputn,[7],{'tansig','purelin'},'trainlm');%这里要加入输出层的转移函数,一般是trainlm
net.trainParam.epochs=10000;%设置最大收敛次数
net.trainParam.lr=0.001;%设置学习速率
net.trainParam.goal=0.00001;%设置收敛误差
net.divideFcn = '';

%网络训练
net=train(net,inputn,outputn);

%% BP网络预测

%网络预测输出
an=sim(net,input_n);

%网络输出反归一化
BPoutput = mapminmax('reverse', an, ps_target); %反归一化

%% 结果分析
figure(1)%图一
subplot(2,1,1)
plot(BPoutput(1,:),':o')
hold on
plot(T_test(1,:),'-*');
legend('材料去除率预测输出','材料去除率期望输出')
title('BP网络预测材料去除率输出','fontsize',12)
ylabel('材料去除率/(nm/min)','fontsize',12)
xlabel('样本','fontsize',12)

subplot(2,1,2)
plot(BPoutput(2,:),':o')
hold on
plot(T_test(2,:),'-*');
legend('表面粗度R_a预测输出','表面粗度R_a期望输出')
title('BP网络预测表面粗度R_a输出','fontsize',12)
ylabel('表面粗度R_a/(nm)','fontsize',12)
xlabel('样本','fontsize',12)

%相对误差
% error1=BPoutput(1,:)-T_test(1,:);
% mse1=mse(error1)
% error2=BPoutput(2,:)-T_test(2,:);
% mse2=mse(error2)
mse_all=mse(BPoutput-T_test);% 计算输出的MSE(均方误差)

acc=exp(-mse_all)

save('net.mat','net') % 将网络net保存为.mat文件,后面可直接调用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值