matlab 基于BP神经网络的预测算法

1、内容简介


295-20220630\NSGAII-可以交流、咨询、答疑

2、内容说明

3、仿真分析

%% 该代码为基于BP神经网络的预测算法

%% 清空环境变量
clc
clear
close all
%% 训练数据预测数据提取及归一化
%下载输入输出数据

input=xlsread('数据训练1.xlsx','sheet1');
output=xlsread('数据训练1.xlsx','sheet2');

%找出训练数据和预测数据
input_train=input((1:80),:)';
output_train=output((1:80))';
input_test=input((81:100),:)';
output_test=output((81:100))';


%% 训练数据归一化;归一范围是[-1,1]
% 训练集
[inputn,inputps1] = mapminmax(input_train,-1,1);
% 测试集
[outputn,outputps1] = mapminmax(output_train,-1,1);

%% 构造网络结构
%创建神经网络
inputnum = 3;       %inputnum   输入层节点数 4维特征
hiddennum = 7;      %hiddennum  隐含层节点数
outputnum = 1;      %outputnum  隐含层节点数

%% 构建BP神经网络      
%隐含层所用函数tansig,输出层所用函数purelin
%Levenberg_Marquardt的BP算法训练函数trainlm
net1 = newff(minmax(inputn) ,[hiddennum outputnum] , { 'logsig' 'purelin' } , 'trainlm' ) ;
%设置训练参数(迭代次数,目标,学习率)
net1.trainparam.show = 20 ;        %显示训练迭代过程,n个周期后显示一下收敛曲线的变化
net1.trainparam.epochs = 100 ;
net1.trainparam.goal = 0.00001;
net1.trainParam.lr = 0.01 ;
% BP训练神经网络
net1 = train( net1, inputn , outputn ) ;

%% 预测数据的归一化
%预测数据归一化
inputn_test = mapminmax('apply',input_test,inputps1);

%% BP神经网络预测输出
an = sim( net1 , inputn_test );

%% 预测结果反归一化
BPoutput = mapminmax('reverse',an,outputps1);

%% 测试集预测  %mse均方差性能分析函数
% 均方误差
error1 = BPoutput- output_test;
MSE1 = mse(error1);
disp(['BP神经网络得到的MSE1:',num2str(MSE1)])

%% 绘制图形
%% BP神经网络预测得到的误差分布(1)第一个数据
figure
subplot(3,1,1);
plot(output_test, 'r-*')%测试的输出真实值
hold on
plot(BPoutput, 'b-o'); %预测的输出真实值
legend('期望输出','预测输出')
title('第1个输出预测效果')
ylabel('函数输出')
xlabel('样本1')
subplot(3,1,2);
stem(BPoutput- output_test)%预测结果输出值减去实际输出真实值 %Stem绘制离散序列数据
title('第1个输出预测误差')
ylabel('误差')
xlabel('样本1')
%神经网络预测误差百分比
subplot(3,1,3);
plot(abs(BPoutput - output_test)./output_test,'-*');
title('神经网络预测误差百分比')
ylabel('误差百分比')
xlabel('样本1')

%%
rmse=(sqrt(mean((BPoutput-output_test).^2)));
disp(rmse);

%% 网络存储
save data1 net1 inputps1 outputps1
 

4、参考论文

你可能感兴趣的:(Matlab系列案例,神经网络,神经网络,人工智能,matlab,BP神经网络,预测算法)