资源简介
本文件功能:用BP神经网络预测温湿度。
本次仿真,预测模型为8*8*8*1,输入数据为359天数据(一个小时测一个数据,一天数据为24)。其中350天数据做训练样本,用来训练BP网络模型的权值和阈值,4天用来做测试样本,用来测试3天左右的温湿度预测值。
本次训练效果比较上次仿真较为准确,判定系数可以达到0.8左右(越靠近1表明仿真效果越好),预测值与实际值点状图基本围绕在主对角线左右,MSE平方误差可以达到0.01,BP网络预测输出图也可以看出预测值的变化趋势基本与期望值一致。
本次仿真存在不足:
1.未修改学习率、附加动量等参量没有解决BP网络收敛慢的问题。
2.没有使用全局优化的算法,没有解决BP容易陷入极值点的问题。
这种用BP网络来进行预测的模型网上有很多,但是大多数都是预测风力发电等,可能也是因为该BP模型是40年代所提出,我是没有找到有温湿度的预测,该代码纯属自己改写的,并且运行无误,现在分享出来,让大家节省一些时间去研究更有深度的算法。
代码片段和文件信息
%% 该代码为基于双隐含层BP神经网络的预测
%% 清空环境变量
clc
clear
%% 训练数据预测数据提取及归一化
%装载输入输出数据
load temperature
load humidity
tday = 350; %训练数据时间
sday = 10; %预测数据时间
sdata = (tday+sday)*24; %总的采集数据个数
oddata = 24; %一天采集的数据个数
%在10天的数据中将10分钟的数据提取出来,总计2880个
temperature = Temp(1:1:sdata:);
humidity = Humidity(1:1:sdata:);
% information=[temp humidity];
% 初始化数据
[mn]=size(temperature);
n = 8;
% m = (m-sday*oddata/10)-oddata/10-n+1;
m = (m-sday*oddata)-oddata-n+1;
input = zeros(mn);
output = zeros(m1);
%找出训练数据和预测数据
for i = 1:m
% input_train(i1:n/2) = temperature_10_14(i:i+5:);
% input_train(in/2+1:n) = humidity(i:i+5:);
% output_train(i:) = temp(i+oddata/10:);
input_train(i1:n/2) = temperature(i:i+3:);
input_train(in/2+1:n) = humidity(i:i+3:);
output_train(i:) = temperature(i+oddata:);
end
[mn] = size(temperature);
n = 8;
% m = (m-tday*oddata/10)-oddata/10-n+1;
m = (m-tday*oddata)-oddata-n+1;
for i = 1:m
% input_test(i1:n/2) = temp(i+tday*oddata/10:i+5+tday*oddata/10:);
% input_test(in/2+1:n) = humidity(i+tday*oddata/10:i+5+tday*oddata/10:);
% output_test(i:) = temp(i+oddata/10+tday*oddata/10:);
input_test(i1:n/2) = temperature(i+tday*oddata:i+3+tday*oddata:);
input_test(in/2+1:n) = humidity(i+tday*oddata:i+3+tday*oddata:);
output_test(i:) = temperature(i+oddata+tday*oddata:);
end
input_train=input_train‘;
output_train=output_train‘;
input_test = input_test‘;
output_test=output_test‘;
%选连样本输入输出数据归一化
[inputninputps]=mapminmax(input_train01);
[outputnoutputps]=mapminmax(output_train01);
%% BP网络训练
% %初始化网络结构
net=newff(inputnoutputn[8 8]);
net.trainParam.epochs=200;
net.trainParam.lr=0.1;
net.trainParam.goal=0.0000004;
%网络训练
[nettr]=train(netinputnoutputn);
%% BP网络预测
%预测数据归一化
inputn_test=mapminmax(‘apply‘input_testinputps01);
%网络预测输出
an=sim(netinputn_test);
%网络输出反归一化
BPoutput=mapminmax(‘reverse‘anoutputps);
%% 结果分析
figure(1)
subplot(231)
plot(BPoutput‘:og‘)
hold on
plot(output_test‘-*‘);
legend(‘预测输出‘‘期望输出‘)
title(‘BP网络预测输出‘‘fontsize‘12)
ylabel(‘函数输出‘‘fontsize‘12)
xlabel(‘样本‘‘fontsize‘12)
%预测误差
error=BPoutput-output_test;
subplot(232)
plot(error‘-*‘)
title(‘BP网络预测误差‘‘fontsize‘12)
ylabel(‘误差‘‘fontsize‘12)
xlabel(‘样本‘‘fontsize‘12)
subplot(233)
plot((output_test-BPoutput)./BPoutput‘-*‘);
title(‘神经网络预测误差百分比‘)
ylabel(‘误差百分比‘‘fontsize‘12)
xlabel(‘样本‘‘fontsize‘12)
errorsum=sum(abs(error));
subplot(234)
plot(errorsum‘-*‘);
title(‘神经网络预测误差绝对值‘)
ylabel(‘误差绝对值‘‘fontsize‘12)
xlabel(‘样本‘‘fontsize‘12)
% a = tr.num_epochs;
% MSE = mse(error);
subplot(235)
plot(tr.epochtr.perf‘‘r‘tr.epochtr.vperf‘‘:g‘tr.epochtr.tperf‘‘-.b‘);
% legend([‘终止代数=‘ num2str(a)])
legend(‘训练‘‘确证‘‘测试‘-1)
title(‘误差曲线‘)
ylabel(‘MSE误差平方‘‘fontsize‘12)
xlabel(‘进化代数‘‘fontsize‘12)
fenmu = sum((output_test-mean(BPoutput)).^2);
fenzi = sum((output_test-BPoutput).^2);
R = 1-fenzi/fenmu;
subplot(236)
plot(BPoutputoutput_test‘.‘);
legend([‘R =
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3378 2019-10-14 21:57 BP预测温度模型_2019.10.14\BP_Hidden.m
文件 134465 2019-10-14 18:21 BP预测温度模型_2019.10.14\humidity.mat
文件 882 2019-10-14 21:52 BP预测温度模型_2019.10.14\readme.txt
文件 936 2019-10-14 18:24 BP预测温度模型_2019.10.14\simpletime.m
文件 303265 2019-10-14 18:21 BP预测温度模型_2019.10.14\temperature.mat
文件 126722 2019-10-14 21:31 BP预测温度模型_2019.10.14\temperature_prediction.jpg
文件 16197871 2019-02-19 00:58 BP预测温度模型_2019.10.14\WeatherHistory.csv
目录 0 2019-10-14 21:48 BP预测温度模型_2019.10.14
----------- --------- ---------- ----- ----
16767519 8
- 上一篇:罗氏线圈以及积分器介绍
- 下一篇:合泰单片机选型
相关资源
- 基于PCA和BP神经网络的人脸识别
- excel版BP神经网络,公式运算
- BP神经网络的算法改进及应用
- 基于BP神经网络的无刷直流电机PID控制
- 用BP神经网络实现minist手写数字识别
- pso优化BP神经网络71465
- 基于BP神经网络的时间序列预测
- 粒子群优化BP神经网络的权值和阈值
- 血管图像分割
- 5篇关于bp神经网络与pid的学术论文
- BP神经网络实现手写体数字识别
- 基于BP神经网络的高斯模糊图像复原方
- 并行化实现基于BP神经网络的手写体数
- BP神经网络识别语音特征
- bp神经网络手写字符汉字识别
- 毕业设计BP神经网络方法对车牌照字符
- 神经网络office插件NNX
- 车牌识别-opencv
- 基于BP神经网络的数字识别系统源代码
- BP神经网络分类算法
- BP神经网络的车牌字符识别的研究
- opencv2+vs2013实现表情识别 ,SVM+BP神经
- BP神经网络详解与.pdf
- 34种字符识别-BP神经网络算法-VS2103+
- 基于主成分分析和贝叶斯正则化BP神经
- BP以及Hopfield神经网络进行车牌数字识
- BP神经网络的非线性系统建模
- BP神经网络稳定性分析
- 一种神经网络模式分析系统 的设计与
- NWP风电功率预测
评论
共有 条评论