LSTM神经网络实战

article/2025/9/22 12:13:37

上一遍博客简单的介绍了LSTM神经网络的工作原理,

有兴趣的打开了解一下:

https://blog.csdn.net/weixin_52486467/article/details/126301845

显目介绍:

一、问题背景 电力系统负荷(电力需求量,即有功功率)预测是指充分考虑历史的系统负荷、经济 状况、气象条件和社会事件等因素的影响,对未来一段时间的系统负荷做出预测。负荷预 测是电力系统规划与调度的一项重要内容。短期(两周以内)预测是电网内部机组启停、 调度和运营计划制定的基础;中期(未来数月)预测可为保障企业生产和社会生活用电, 合理安排电网的运营与检修决策提供支持;长期(未来数年)预测可为电网改造、扩建等 计划的制定提供参考,以提高电力系统的经济效益和社会效益。 复杂多变的气象条件和社会事件等不确定因素都会对电力系统负荷造成一定的影响, 使得传统负荷预测模型的应用存在一定的局限性。同时,随着电力系统负荷结构的多元 化,也使得模型应用的效果有所降低,因此电力系统负荷预测问题亟待进一步研究。

二、解决问题

1.地区负荷的中短期预测分析 根据附件中提供的某地区电网间隔 15 分钟的负荷数据,建立中短期负荷预测模型:

(1)给出该地区电网未来 10 天间隔 15 分钟的负荷预测结果,并分析其预测精度;

(2)给出该地区电网未来 3 个月日负荷的最大值和最小值预测结果,以及相应达到负 荷最大值和最小值的时间,并分析其预测精度。

2.行业负荷的中期预测分析 对不同行业的用电负荷进行中期预测分析,能够为电网运营与调度决策提供重要依 据。特别是在新冠疫情、国家“双碳”目标等背景下,通过对大工业、非普工业、普通工 业和商业等行业的用电负荷进行预测,有助于掌握各行业的生产和经营状况、复工复产和 后续发展走势,进而指导和辅助行业的发展决策。请根据附件中提供的各行业每天用电负 荷相关数据,建立数学模型研究下面问题:

(1)挖掘分析各行业用电负荷突变的时间、量级和可能的原因。
​(2)给出该地区各行业未来 3 个月日负荷最大值和最小值的预测结果,并对其预测精 度做出分析。 (3)根据各行业的实际情况,研究国家“双碳”目标对各行业未来用电负荷可能产生 的影响,并对相关行业提出有针对性的建议。

数据说明:

⚫ 附件 1 提供了某地区电网 2018 年 1 月 1 日至 2021 年 8 月 31 日间隔 15 分钟的电力系 统负荷数据,具体数据结构示例如下

⚫ 附件 2 提供了该地区四个行业 2019 年 1 月 1 日至 2021 年 8 月 31 日用电日负荷最大 值和最小值数据,具体数据结构示例如下:

 ⚫ 附件 3 提供了该地区 2018 年 1 月 1 日至 2021 年 8 月 31 日主要的气象数据,具体数 据结构示例如下

 注:数据来源泰迪数据挖掘赛

 先上数据(这里上两份数据 1是经过清洗过的数据 2是原数据)

原数据:

链接:https://pan.baidu.com/s/1xVD024sTkXgFm8wBom-MeA 
提取码:mzyn

直接使用到模型数据:

链接:https://pan.baidu.com/s/1aVU6v9h99193cgoEX8Jz2w 
提取码:ownp

这里只展示LSTM 模型 当时做的时候我也做了lightgbm、catboost、xgboost、以及三个模型的融合模型 这些后续整理好也会发出来

先导入所需要的模块

import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
import datetime

数据预处理

x = data[[ '最高温度', '最低温度', '白天风力风向', '夜晚风力风向','白天风力风向1', '夜晚风力风向1', '天气1', '天气2', '月', '天', '小时', '一年第几天', '一年第几周','一周第几天', '是否节假日', '季节']]y = data['总有功功率(kw)']y=np.array(y).reshape(-1,1)
#x归一
x = MinMaxScaler().fit_transform(x)
#y归一
mm = MinMaxScaler().fit(y)
y = mm.transform(y)time_stamp = 50
train = x[0:int(len(x)*0.8)+ time_stamp]
valid = x[int(len(x)*0.8) - time_stamp:]X_train, y_train = [], []
for i in range(len(train)-time_stamp):X_train.append(train[i:i+time_stamp,:])y_train.append(train[i, :][:])
X_train, y_train = np.array(X_train), np.array(y_train)X_valid, y_valid = [], []
for i in range(len(valid)-time_stamp):X_valid.append(valid[i:i+time_stamp,:])y_valid.append([valid[i,:]])
X_true, y_true = np.array(X_valid), np.array(y_valid)
print(X_train.shape)
print(y_train.shape)

搭建神经网络模型(LSTM) 

#模型构建
epochs = 30
batch_size =256
from keras.models import Sequential
from keras.layers import Dropout, Dense, LSTMstaet = datetime.datetime.now()model = Sequential()
model.add(LSTM(50,#神经元#input_shape=(X_train.shape[1],X_train.shape[-1]),input_dim=X_train.shape[-1],#特征input_length=X_train.shape[1],#步长return_sequences=True))
model.add(Dropout(0.5))
model.add(LSTM(units=50))
model.add(Dense(16))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(X_train, y_train, epochs=epochs, batch_size=batch_size, verbose=1)train_pre = model.predict(X_train)
y_pre1 = model.predict(X_true)y_pre11=mm.inverse_transform(y_pre1)  #反归一化
train_pre=mm.inverse_transform(train_pre)  #反归一化
# yz_pre=mm.inverse_transform(yz_pre)  #反归一化
y = mm.inverse_transform(y.reshape(-1,1))
y_true = mm.inverse_transform(y_true.reshape(-1,16))
from sklearn import metrics
print('LSTM预测RMSE:', np.sqrt(metrics.mean_squared_error(y_true, y_pre11)))
print('LSTM预测MAE:', metrics.mean_absolute_error(y_true, y_pre11))
end = datetime.datetime.now()
print(end-staet)
pre = model.predict(x.loc[1345,'总有功功率'])
print(pre)

绘图

pre = model.predict(x.loc[1345,'总有功功率'])
print(pre)
print('画图')
import matplotlib.pyplot as plt
plt.figure(figsize=(500,50))
plt.plot([x for x in train_pre.flatten()],c='y')
plt.plot(y.flatten(),c='b')
plt.plot([None for _ in train_pre.flatten()]+[x for x in y_pre11.flatten()],c='r')
plt.show()
print('画图结束')

活动地址:CSDN21天学习挑战赛


http://chatgpt.dhexx.cn/article/xHXNFp5T.shtml

相关文章

LSTM -长短期记忆网络(RNN循环神经网络)

文章目录 基本概念及其公式输入门、输出门、遗忘门候选记忆元记忆元隐状态 从零开始实现 LSTM初始化模型参数定义模型训练和预测 简洁实现小结 基本概念及其公式 LSTM,即(long short-term Memory)长短期记忆网络,也是RNN循环神经网络的一种改进方法&…

机器学习之LSTM的Python实现

什么是LSTM? LSTM(长短期记忆人工神经网络),是一种可以学习长期依赖特殊的RNN(循环神经网络)。 传统循环网络RNN虽然可以通过记忆体,实现短期记忆,进行连续数据的预测。但是当连续…

神经网络:LSTM基础学习

1、LSTM简介 在时间序列数据学习中,传统的循环神经网络(RNN)存在较多的学习瓶颈和技术缺陷,而长短时记忆(LSTM)神经网络克服了循环神经网络的缺陷,使其在长时间序列数据学习训练中能克服梯度爆炸…

Lstm(循环神经网络)

算法模型Lstm(循环神经网络): 简介 LSTM和RNN相似,它们都是在前向传播的过程中处理流经细胞的数据,不同之处在于 LSTM 中细胞的结构和运算有所变化。 LSTM结构: 遗忘门: 遗忘门的功能是决定应丢弃或保留哪些信息。…

基于MATLAB的LSTM神经网络时序预测

参考博客及文献:4 Strategies for Multi-Step Time Series Forecasting Multivariate Time Series Forecasting with LSTMs in Keras (machinelearningmastery.com) LSTM进阶:使用LSTM进行多维多步的时间序列预测_lstm多维多部预测_一只小EZ的博客-CSD…

LSTM神经网络图解

LSTM神经网络图详解 (1)遗忘门,用于计算信息的遗忘(保留)程度,通过sigmoid处理后为0到1的值,1表示全部保留,0表示全部忘记。 f t σ ( W f ⋅ [ h t − 1 , x t ] b f ) f_{t}\si…

【神经网络】LSTM

1.什么是LSTM 长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,相比普通的RNN,LSTM能够在更长的序列中有更好的表现。 LSTM区别于RNN地方…

[深入浅出] LSTM神经网络

由来 人类并不是每时每刻都从一片空白的大脑开始他们的思考。在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义。我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考。我们的思想拥有持久性。 传统的神经…

简单理解LSTM神经网络

递归神经网络 在传统神经网络中,模型不会关注上一时刻的处理会有什么信息可以用于下一时刻,每一次都只会关注当前时刻的处理。举个例子来说,我们想对一部影片中每一刻出现的事件进行分类,如果我们知道电影前面的事件信息&#xf…

LSTM神经网络

LSTM被广泛用于许多序列任务(包括天然气负荷预测,股票市场预测,语言建模,机器翻译),并且比其他序列模型(例如RNN)表现更好,尤其是在有大量数据的情况下。 LSTM经过精心设…

(神经网络深度学习)--循环神经网络LSTM

一、什么是LSTM: 如果你经过上面的文章看懂了RNN的内部原理,那么LSTM对你来说就很简单了,首先大概介绍一下LSTM,是四个单词的缩写,Long short-term memory,翻译过来就是长短期记忆,是RNN的一种…

机器学习——人工神经网络模型LSTM

LSTM的学习 学习目标: 1理解什么是人工神经网络。2深入理解LSTM(长短期记忆网络)3Code 浅析人工神经网络: 在谈人工神经网络模型之前我们先来了解一下生理上的神经网络。 下面是一张对比图: Neural Science Compute…

LSTM神经网络详解

LSTM 长短时记忆网络(Long Short Term Memory Network, LSTM),是一种改进之后的循环神经网络,可以解决RNN无法处理长距离的依赖的问题,目前比较流行。 长短时记忆网络的思路: 原始 RNN 的隐藏层只有一个状态,即h&am…

LSTM神经网络介绍

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 引言一、介绍1.1什么是LSTM?1.2基础知识1.2.1门控机制1.2.2 相关激活函数1.2.3网络参数介绍 二、LSTM网络架构2.1架构图 三、LSTM的门3.1遗忘门3.2输入门3.3输出门…

大白话理解LSTM神经网络(附实例讲解)

前言 本文章为个人学习笔记整理,所学习的内容来自b站up主老弓的学习日记,附有实例讲解。 归类 长短期记忆神经网络(LSTM)是一种特殊的循环神经网络(RNN)。原始的RNN在训练中,随着训练时间的加长以及网络层数的增多&a…

Idea如何导入一个SpringBoot项目

最近公司要求开发工具要用Idea,作为一个eclipse的老员工,记录一下Idea中遇到的坑 刚开始用Idea从Git上导入一个项目时,遇到了很多坑,网上有很多方法,我不多做介绍。只说明一下我使用的方法。 1.本地新建一个文件夹&a…

idea导入项目框架的方法

学习时,使用IDEA的时候,经常需要导入项目框架,下面操作介绍如何导入项目框架。 打开需要导入的项目 打开方式: 打开 idea ,选择 Import Project 也可以进入idea后,选择 Flie --> New --> Project …

IDEA导入Eclipse项目

背景:用习惯了idea再去用eclipse实在用的不习惯,于是将老的eclipse项目导入到eclipse,网上有很多教程,看了很多博客都不行,一直报错,各种报错,现在终于好了,我们一起来看看怎么将ecl…

关于新版idea如何导入项目

现今有很多同学都发现idea怎么找不到import project这个按钮了,我也遇到了这个问题,经过研究发现,之前使用import project最关键还是在于project form Existing Sources。 而就在打开项目后,File-->New-->Project form Exi…

idea导入项目后没有被识别为maven项目的解决办法

开发中遇到了idea导入项目后没有被识别为maven项目,使用下面方法即可 1、首先点击工具栏最左边的 Help 再点击 Find Action ;或者使用快捷键 CtrlShiftA 2、接着在输入框中输入 maven projects ,会弹出一个 Add Maven Projects 选项&#xf…