关于数据挖掘:PYTHON用KERAS的LSTM神经网络进行时间序列预测天然气价格例子附代码数据

40次阅读

共计 4246 个字符,预计需要花费 11 分钟才能阅读完成。

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

最近咱们被客户要求撰写对于 LSTM 的钻研报告,包含一些图形和统计输入。

一个简略的编码器 - 解码器 LSTM 神经网络应用于工夫序列预测问题:预测天然气价格,预测范畴为 10 天。“进入”工夫步长也设置为 10 天。) 只须要 10 天来推断接下来的 10 天。能够应用 10 天的历史数据集以在线学习的形式从新训练网络 点击文末“浏览原文”获取残缺 代码数据

数据集是天然气价格 查看文末理解数据获取形式 ,具备以下特色:

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

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

**

拓端数据部落

,赞 9

读取数据并将日期作为索引解决

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


点击文末 “浏览原文”

获取全文残缺材料。

本文选自《PYTHON 用 KERAS 的 LSTM 神经网络进行工夫序列预测天然气价格例子》。

点击题目查阅往期内容

Python 对商店数据进行 lstm 和 xgboost 销售量工夫序列建模预测剖析
Matlab 用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
RNN 循环神经网络、LSTM 长短期记忆网络实现工夫序列长期利率预测
联合新冠疫情 COVID-19 股票价格预测:ARIMA,KNN 和神经网络工夫序列剖析
深度学习:Keras 应用神经网络进行简略文本分类剖析新闻组数据
用 PyTorch 机器学习神经网络分类预测银行客户散失模型
PYTHON 用 LSTM 长短期记忆神经网络的参数优化办法预测工夫序列洗发水销售数据
Python 用 Keras 神经网络序列模型回归拟合预测、准确度检查和后果可视化
Python 用 LSTM 长短期记忆神经网络对不稳固降雨量工夫序列进行预测剖析
R 语言中的神经网络预测工夫序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
R 语言深度学习:用 keras 神经网络回归模型预测工夫序列数据
Matlab 用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
R 语言 KERAS 深度学习 CNN 卷积神经网络分类辨认手写数字图像数据(MNIST)
MATLAB 中用 BP 神经网络预测人体脂肪百分比数据
Python 中用 PyTorch 机器学习神经网络分类预测银行客户散失模型
R 语言实现 CNN(卷积神经网络)模型进行回归数据分析
SAS 应用鸢尾花 (iris) 数据集训练人工神经网络 (ANN) 模型
【视频】R 语言实现 CNN(卷积神经网络)模型进行回归数据分析
Python 应用神经网络进行简略文本分类
R 语言用神经网络改良 Nelson-Siegel 模型拟合收益率曲线剖析
R 语言基于递归神经网络 RNN 的温度工夫序列预测
R 语言神经网络模型预测车辆数量工夫序列
R 语言中的 BP 神经网络模型剖析学生问题
matlab 应用长短期记忆(LSTM)神经网络对序列数据进行分类
R 语言实现拟合神经网络预测和后果可视化
用 R 语言实现神经网络预测股票实例
应用 PYTHON 中 KERAS 的 LSTM 递归神经网络进行工夫序列预测
python 用于 NLP 的 seq2seq 模型实例: 用 Keras 实现神经网络机器翻译
用于 NLP 的 Python:应用 Keras 的多标签文本 LSTM 神经网络分类

正文完
 0