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

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

全文下载链接:http://tecdat.cn?p=26519


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


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

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

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


# 固定日期时间并设置为索引
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\])

相关文章
|
10月前
|
运维 监控 数据可视化
Python 网络请求架构——统一 SOCKS5 接入与配置管理
通过统一接入端点与标准化认证,集中管理配置、连接策略及监控,实现跨技术栈的一致性网络出口,提升系统稳定性、可维护性与可观测性。
|
机器学习/深度学习 算法 量子技术
GQNN框架:让Python开发者轻松构建量子神经网络
为降低量子神经网络的研发门槛并提升其实用性,本文介绍一个名为GQNN(Generalized Quantum Neural Network)的Python开发框架。
355 4
GQNN框架:让Python开发者轻松构建量子神经网络
|
12月前
|
机器学习/深度学习 数据采集 数据挖掘
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
399 2
|
12月前
|
机器学习/深度学习 算法 安全
【PSO-LSTM】基于PSO优化LSTM网络的电力负荷预测(Python代码实现)
【PSO-LSTM】基于PSO优化LSTM网络的电力负荷预测(Python代码实现)
477 0
|
10月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化TCN-LSTM时间卷积神经网络时间序列预测算法matlab仿真
本内容展示了一种基于粒子群优化(PSO)与时间卷积神经网络(TCN)的时间序列预测方法。通过 MATLAB2022a 实现,完整程序运行无水印,核心代码附详细中文注释及操作视频。算法利用 PSO 优化 TCN 的超参数(如卷积核大小、层数等),提升非线性时间序列预测性能。TCN 结构包含因果卷积层与残差连接,结合 LSTM 构建混合模型,经多次迭代选择最优超参数,最终实现更准确可靠的预测效果,适用于金融、气象等领域。
|
11月前
|
JavaScript Java 大数据
基于python的网络课程在线学习交流系统
本研究聚焦网络课程在线学习交流系统,从社会、技术、教育三方面探讨其发展背景与意义。系统借助Java、Spring Boot、MySQL、Vue等技术实现,融合云计算、大数据与人工智能,推动教育公平与教学模式创新,具有重要理论价值与实践意义。
|
JSON 网络安全 数据格式
Python网络请求库requests使用详述
总结来说,`requests`库非常适用于需要快速、简易、可靠进行HTTP请求的应用场景,它的简洁性让开发者避免繁琐的网络代码而专注于交互逻辑本身。通过上述方式,你可以利用 `requests`处理大部分常见的HTTP请求需求。
886 51
|
12月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
703 18
|
11月前
|
机器学习/深度学习 数据采集 并行计算
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
1048 2

热门文章

最新文章

推荐镜像

更多