前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习 | 基于LSTM模型的黄金期货价格预测

深度学习 | 基于LSTM模型的黄金期货价格预测

作者头像
DataCharm
发布2021-04-16 11:46:08
2.5K0
发布2021-04-16 11:46:08
举报

应广大读者盆友的建议,本期主题是基于LSTM网络对黄金期货价格进行预测。

1.LSTM网络搭建

"LSTM”通常称之为长短期记忆网络,它能够学习长期的规律,且能够从历史规律中提取信息并预测未来的走势。

基于Keras进行LSTM模型搭建如下:

代码语言:javascript
复制
model = Sequential()
model.add(LSTM(1024, input_shape=(None,1)))
model.add(Dense(1024,activation="relu"))
model.add(Dense(512,activation="relu"))
model.add(Dense(256,activation="relu"))
model.add(Dense(128,activation="relu"))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')

2.数据处理

本文数据集为黄金期货价格,可从:https://cn.investing.com/commodities/gold-historical-data进行下载。(单位 : 1金衡盎司 = 31.1034768克)

2.1利用pandas读取数据集

代码语言:javascript
复制
import pandas as pd
df = pd.read_excel(r"*\LSTM介绍\黄金期货历史价格.xlsx")
df[["日期","开盘"]]

数据集共有10469条数据,其中包含日期和开盘价信息。

2.2 生成训练集和测试集,其中训练集占90%,测试集占10% 。

代码语言:javascript
复制
dataset = df["开盘"].values
# 将整型变为float
dataset = dataset.astype('float32')
train_size = int(len(dataset) * 0.9)
trainlist = dataset[:train_size]
testlist = dataset[train_size:]

2.3 生成时序样本,这里通过前15天的开盘价预测明天的开盘价,所以look_back = 15。

代码语言:javascript
复制
import numpy as np
def create_dataset(dataset, look_back):
    dataX, dataY = [], []
    for i in range(len(dataset)-look_back-1):
        a = dataset[i:(i+look_back)]
        dataX.append(a)
        dataY.append(dataset[i + look_back])
    return np.array(dataX),np.array(dataY)
look_back = 15
trainX,trainY  = create_dataset(trainlist,look_back)
testX,testY = create_dataset(testlist,look_back)

3.模型训练

3.1本次实验共训练了99轮,每批次输入128个数据对进模型

代码语言:javascript
复制
model.fit(trainX, trainY, epochs=99, batch_size=128, verbose=1)

3.2 对最终模型进行评价

代码语言:javascript
复制
trainPredict = model.predict(trainX)
testPredict = model.predict(testX)
plt.plot(trainY)
plt.plot(trainPredict[1:])
plt.show()
plt.plot(testY)
plt.plot(testPredict[1:])
plt.show()
代码语言:javascript
复制
from sklearn.metrics import r2_score, mean_squared_error
c = testPredict.ravel()
DNN_r2 = r2_score(testY, c)
print('LSTM模型的R平方值为:',DNN_r2)
DNN_MSE = mean_squared_error(testY, c)
print('LSTM模型的MSE 值为:',DNN_MSE)

LSTM模型R2 = 0.958 ; MSE = 1863.5264

4.黄金价格预测

通过官网:https://cn.investing.com/commodities/gold-historical-data下载了前15个交易日的黄金期货开盘价。

代码语言:javascript
复制
pre_df = pd.read_excel(r"*\LSTM介绍\预测.xlsx")
pre_df_x = np.array(pre_df["开盘"].iloc[::-1])
pre_df_x = pre_df_x.reshape(1,15,1)
Predict = model.predict(pre_df_x)
print("2021年3月24日的黄金期货开盘预测价为:",Predict)

2021年3月24日的黄金期货开盘价格预测为:1733.862(元/金衡盎司)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DataCharm 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.LSTM网络搭建
  • 2.数据处理
  • 3.模型训练
  • 4.黄金价格预测
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档