首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

日期(从 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((,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 =

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)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20221123A05H0900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券