💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文内容如下:🎁🎁🎁
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
编辑
摘要
使用BP神经网络实现简单的电力负荷回归预测任务。主要的步骤为:导入数据、数据归一化、建立BP神经网络、训练BP神经网络、使用测试数据预测负荷情况、误差分析以及绘图。
一、电力负荷数据导入
使用Matlab中的xlsread函数从指定的excel文件中提取电力负荷数据,可以自己制定需要导入的天数,这里设置导入5天的数据,如下图所示:
编辑
其他全部数据:
编辑
二、输入输出数据归一化
虽然神经⽹络的各层的输⼊信号分布不同,但最终“指向“的样本标记是不变的,即边缘概率不同⽽条件概率⼀致。 为了降低分布变化的影响,可使⽤归⼀化策略Normalization,把数据分布映射到⼀个确定的区间。神经⽹络中,常⽤的归⼀化策略有BN(Batch Normalization), WN(Weight Normalization), LN(Layer Normalization),IN(Instance Normalization)。
这里使用max-min归一化方法将数据全部归一化到0-1之间,归一化后的数据如下:
编辑
三、建立和训练BP神经网络
BP神经网络是一种多层前馈神经网络,在多层感知器的基础上增加误差逆向传播信号,用以处理非线性连续函数,该网络由输入层、隐含层、输出层构成,其主要特点是信号前向传递,误差反向传播,可以用在系统模型辨识、预测或控制中。在前向传递中,输入信号从输入层经隐含层逐层处理,直至输出层。每一层的神经元状态只影响下一层神经元状态。如果输出层得不到期望输出﹐则转入反向传播,根据预测误差调整网络权值和阈值﹐从而使BP神经网络预测输出不断逼近期望输出﹐其拓扑结构图如图1所示:
编辑
本文指定输入特征个数为1,输出特征个数为1,设置神经元个数为100,设置学习率为0.001,使用Matlab中的newff函数建构BP神经网络,使用train函数训练BP神经网络:
编辑
四、 使用测试数据进行负荷预测
测试结果:
编辑
五、Matlab代码实现
clc; clear; close all; %% 导入数据 month = 12; %训练月份 day_start = 5; %开始日期 day_len = 5; %训练天数 file_path = '2018负荷预测数据'; map_maxmin = []; output = []; %% 数据分组及归一化 for day = day_start:1:(day_start + day_len - 1) [raw_data, raw_max ,raw_min] = read_load_data_from_excel(file_path, month ,day); % 从文件夹读取数据 % 输入与输出归一化 data_temp = my_map(1, raw_data, raw_max, raw_min, 1, 0); map_maxmin = cat(1, map_maxmin, [0 1]); output = cat(1, output, data_temp); target_day = day + 1; end [target_data, target_max, target_min] = read_load_data_from_excel(file_path, month ,target_day); t_d = my_map(1, target_data, target_max, target_min, 1, 0); %% 创建网络
六 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取【请看主页然后私信】