数据分享|PYTHON用KERAS的LSTM神经网络进行时间序列预测天然气价格例子

简介: 数据分享|PYTHON用KERAS的LSTM神经网络进行时间序列预测天然气价格例子

原文链接:http://tecdat.cn?p=26519 


一个简单的编码器-解码器LSTM神经网络应用于时间序列预测问题:预测天然气价格,预测范围为 10 天。“进入”时间步长也设置为 10 天。) 只需要 10 天来推断接下来的 10 天。可以使用 10 天的历史数据集以在线学习的方式重新训练网络。

数据集是天然气价格查看文末了解数据获取方式 ,具有以下特征:

  • 日期(从 1997 年到 2020 年)- 为 每天数据
  • 以元计的天然气价格


相关视频:LSTM神经网络架构和工作原理及其在Python中的预测应用


读取数据并将日期作为索引处理


# 固定日期时间并设置为索引
dftet.index = pd.DatetimeIndex
# 用NaN来填补缺失的日期(以后再补)
dargt = f\_arget.reindex(ales, fill\_value=np.nan)
# 检查
print(d_tret.dtypes)
df_aget.head(10)


处理缺失的日期


# 数据归纳(使用 "向前填充"--根据之前的值进行填充)。
dfaet.fillna(method='ffill', inplace=True)


特征工程


因为我们正在使用深度学习,所以特征工程将是最小的。

  • One-hot 编码“is_weekend”和星期几
  • 添加行的最小值和最大值(可选)

通过设置固定的上限(例如 30 倍中位数)修复异常高的值

# 在df_agg中修复任何非常高的值 - 归一化为中值
for col in co\_to\_fi_ies:
    dgt\[col\] = fixnaes(dftget\[col\])


添加滞后

# 增加每周的滞后性
df\_tret = addag(d\_aget, tare\_arble='Price', step\_ak=7)
# 增加30天的滞后性
df\_get = ad\_ag(df\_ret, tagt\_able='Price', sep_bck=30)

# 合并后删除任何有NA值的列
d_gt.dropna(inplace=True)
print(dfget.shape)
tie\_nx = df\_art.index

归一化


  • 归一化或最小-最大尺度(需要减小较宽的数值范围,以便 LSTM 收敛)。

# 标准化训练数据\[0, 1\]

sclr = prcsing.Maxcaer((0,1))

准备训练数据集


  • 时间步数 = 1
  • 时间步数 = nsteout小时数(预测范围)

在这里,我们将数据集从 [samples, features] 转换为 [samples, steps, features] - 与算法 LSTM 一起使用的维度。下面的序列拆分使用“walk-forward”方法来创建训练数据集。

# 多变量多步骤编码器-解码器 lstm 示例
# 选择一个时间步骤的数量
# 维度变成\[样本数、步骤、特征\]
X, y = splices(datasformed, n\_ep\_in, n\_ep\_out)
# 分成训练/测试
et_ut = int(0.05*X.shpe\[0\])
X\_tain, X\_est, ytrain, y\_tst = X\[:-tetaont\], X\[-tes\_ont:\], y\[:-tstmunt\], y\[-es_unt:\]

训练模型

这利用了长期短期记忆算法。

# 实例化和训练模型

print

model = cre\_odel(n\_tps\_in, n\_tep\_out, n\_feures, lerig_rate=0.0001)


探索预测

%%time
#加载特定的模型
model = lod\_id\_del(
                           n_stepin, 
                           n\_sep\_out,
                           X_tan.shape\[2\])

# 展示对一个样本的预测

testle_ix = 0
yat = mdel.predict(X\_tet\[est\_amle\_ix\].reshape((1,n\_sep_in, nfatues)),erbose=Tue)

# 计算这一个测试样本的均方根误差
rmse = math.sqrt

plot\_result(yhat\[0\], scaler, saved\_columns)


点击标题查阅往期内容


Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析


01

02

03

04



平均 RMSE

# 收集所有的测试RMSE值
rmesores = \[\]
for i in range:
    yhat = oel.predict(Xtet\[i\].reshape((1, \_stes\_in, _faues)), verbose=False)
    # 计算这一个测试样本的均方根误差
    rmse = math.sqrt(mensqaerror(yhat\[0\], y_test\[i\]))


训练整个数据集

#在所有数据上实例化和训练模型
modl\_l = cret\_mel(nsep\_in, steps\_ou, n_etures,learnnrate=0.0001)
mde\_all, ru\_ime, weighfie = trin(md_all, X, y, batcsie=16, neohs=15)

样本内预测


注意:模型已经“看到”或训练了这些样本,但我们希望确保它与预测一致。如果它做得不好,模型可能会欠拟合或过拟合。要尝试的事情:

  • 增加或减少批量大小
  • 增加或减少学习率
  • 更改网络中 LSTM 的隐藏层数
# 获得10个步
da\_cent = dfret.iloc\[-(ntes\_in*2):-nsps_in\]
# 标准化
dta_ectormed = sclr.rasfrm(daareent)
# 维度变成\[样本数、步骤、特征\]
n_res = dtcentorm.shape\[1\]
X\_st = data\_recn\_trsrd.reshape((1, n\_tps\_n, n\_feares))
# 预测
foecst = mlll.predict(X_past)
# 扩大规模并转换为DF
forcast = forast.resape(n_eaturs))
foect = saer.inese_transform(forecast)
fuure\_dtes  df\_targe.ide\[-n\_steps\_out:\]
# 绘图
histrcl = d_aet.ioc\[-100:, :1\] # 获得历史数据的X步回溯
for i in ane(oisae\[1\]):
    fig = plt.igre(fgze=(10,5))
    
    # 绘制df_agg历史数据
    plt.plot(.iloc\[:,i\]
    
    # 绘制预测图
    plt.plot(frc.iloc\[:,i\])
    # 标签和图例
    plt.xlabel

预测样本外

# 获取最后10步
dtareent = dfargt.iloc\[-nstpsin:\]。
# 标准化
dta\_ecntranfomed = scaler.trasorm(data\_recent)
# 预测
forct = meall.rict(_past)
# 扩大规模并转换为DF
foreast = foecs.eshape(\_seps\_ut, n_eatures))
foreast = sclerinvers_tranorm(focast)
futur\_daes = pd.daternge(df\_argetinex\[-1\], priods=step_out, freq='D')
# 绘图
htrical = df_taet.iloc\[-100:, :1\] # 获得历史数据的X步回溯
# 绘制预测图
    plt.plot(fectoc\[:,i\])

相关文章
|
11天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
144 55
|
24天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
21天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
114 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
21小时前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
22天前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
22天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
55 3
|
26天前
|
网络安全 Python
Python网络编程小示例:生成CIDR表示的IP地址范围
本文介绍了如何使用Python生成CIDR表示的IP地址范围,通过解析CIDR字符串,将其转换为二进制形式,应用子网掩码,最终生成该CIDR块内所有可用的IP地址列表。示例代码利用了Python的`ipaddress`模块,展示了从指定CIDR表达式中提取所有IP地址的过程。
40 6
|
1月前
|
机器学习/深度学习 自然语言处理 语音技术
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
52 8
|
29天前
|
数据采集 XML 存储
构建高效的Python网络爬虫:从入门到实践
本文旨在通过深入浅出的方式,引导读者从零开始构建一个高效的Python网络爬虫。我们将探索爬虫的基本原理、核心组件以及如何利用Python的强大库进行数据抓取和处理。文章不仅提供理论指导,还结合实战案例,让读者能够快速掌握爬虫技术,并应用于实际项目中。无论你是编程新手还是有一定基础的开发者,都能在这篇文章中找到有价值的内容。
|
1月前
|
传感器 物联网 开发者
使用Python读取串行设备的温度数据
本文介绍了如何使用Python通过串行接口(如UART、RS-232或RS-485)读取温度传感器的数据。详细步骤包括硬件连接、安装`pyserial`库、配置串行端口、发送请求及解析响应等。适合嵌入式系统和物联网应用开发者参考。
53 3