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

前些天看到一位大佬的深度学习的推文,内容很适用于实战,争得原作者转载同意后,转发给大家。之后会介绍LSTM的理论知识。

我把code先放在我github上,大家有需要的自行下载,等原作者上传相关code时,我再告诉大家。欢迎大家关注大佬的公众号。

import pandas as pd
import datetime
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
import pandas as pd
import os
from keras.models import Sequential, load_model df = pd.read_excel(r"*\黄金期货历史价格.xlsx")
df2 = df.iloc[::-1]
dataset = df2["开盘"].values
# 将整型变为float
dataset = dataset.astype('float32')
train_size = int(len(dataset) * 0.8)
trainlist = dataset[:train_size]
testlist = dataset[train_size:]
import numpy as np
def create_dataset(dataset, look_back):
#这里的look_back与timestep相同
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)
trainX = np.reshape(trainX, (trainX.shape[0], trainX.shape[1], 1))
testX = np.reshape(testX, (testX.shape[0], testX.shape[1] ,1 )) # create and fit the LSTM network
model = Sequential()
model.add(LSTM(1024, input_shape=(None,1)))
model.add(Dense(256, activation="relu"))
model.add(Dense(128, activation="relu"))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(trainX, trainY, epochs=100, batch_size=128, verbose=2)
model.save(os.path.join(r"*\LSTM介绍","Test" + ".h5")) trainPredict = model.predict(trainX)
testPredict = model.predict(testX) ## 绘图评价
fig = plt.subplot()
plt.plot(trainY, label = 'trainY' )
plt.plot(trainPredict[1:], label = 'trainPredict')
plt.plot(testY, label = 'testY')
plt.plot(testPredict[1:], label = 'testPredict')
plt.legend()
plt.savefig(r"D:\PycharmProjects\pythonProject\LSTM介绍\Evaluation.pdf")
plt.show() ## MSE
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) ## 预测
pre_df = pd.read_excel(r"D:\PycharmProjects\pythonProject\LSTM介绍\predict.xlsx")
pre_df_x = np.array(pre_df["开盘"].iloc[::-1])
pre_df_x = pre_df_x.reshape(1,25,1)
Predict = model.predict(pre_df_x)
print("2021年3月28日的黄金期货开盘预测价为:",Predict)

深度学习|基于LSTM网络的黄金期货价格预测--转载的更多相关文章

  1. 深度学习图像分割——U-net网络

    写在前面: 一直没有整理的习惯,导致很多东西会有所遗忘,遗漏.借着这个机会,养成一个习惯. 对现有东西做一个整理.记录,对新事物去探索.分享. 因此博客主要内容为我做过的,所学的整理记录以及新的算法. ...

  2. 调参侠的末日? Auto-Keras 自动搜索深度学习模型的网络架构和超参数

    Auto-Keras 是一个开源的自动机器学习库.Auto-Keras 的终极目标是允许所有领域的只需要很少的数据科学或者机器学习背景的专家都可以很容易的使用深度学习.Auto-Keras 提供了一系 ...

  3. 深度学习之GRU网络

    1.GRU概述 GRU是LSTM网络的一种效果很好的变体,它较LSTM网络的结构更加简单,而且效果也很好,因此也是当前非常流形的一种网络.GRU既然是LSTM的变体,因此也是可以解决RNN网络中的长依 ...

  4. TensorFlow (RNN)深度学习 双向LSTM(BiLSTM)+CRF 实现 sequence labeling 序列标注问题 源码下载

    http://blog.csdn.net/scotfield_msn/article/details/60339415 在TensorFlow (RNN)深度学习下 双向LSTM(BiLSTM)+CR ...

  5. 深度学习之ResNet网络

    介绍 Resnet分类网络是当前应用最为广泛的CNN特征提取网络. 我们的一般印象当中,深度学习愈是深(复杂,参数多)愈是有着更强的表达能力.凭着这一基本准则CNN分类网络自Alexnet的7层发展到 ...

  6. 【深度学习】之Caffe的solver文件配置(转载自csdn)

    原文: http://blog.csdn.net/czp0322/article/details/52161759 今天在做FCN实验的时候,发现solver.prototxt文件一直用的都是mode ...

  7. 深度学习之Seq_seq网络

    知识点 """ 机器翻译: 历史: 1.逐字翻译 2.基于统计学的机器翻译 3.循环网络和编码 翻译过程: 输入 -- > encoder -->向量 --& ...

  8. 深度学习之TCN网络

    论文链接:https://arxiv.org/pdf/1803.01271.pdf TCN(Temporal Convolutional Networks) TCN特点: 可实现接收任意长度的输入序列 ...

  9. 深度学习-生成对抗网络GAN笔记

    生成对抗网络(GAN)由2个重要的部分构成: 生成器G(Generator):通过机器生成数据(大部分情况下是图像),目的是“骗过”判别器 判别器D(Discriminator):判断这张图像是真实的 ...

随机推荐

  1. nodejs根据word模板生成文档

    这里使用的模块是 docx-templates,直接npm安装即可[方法二:https://www.cnblogs.com/vichang/p/10416449.html]  1,模板文件 +++QU ...

  2. qt 中的画图

  3. LeetCoded第239题题解--滑动窗口最大值

    滑动窗口最大值 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的 k 个数字.滑动窗口每次只向右移动一位. 返回滑动窗口中的最大值. 进 ...

  4. Linux centos 安装 ftp(Vsftp) 与 设置ftp(Vsftp)

    本文章只是简单搭建,因为公司只须要简单使用,虽然简单但是之前也走了一些弯路,所以决定把过程记录下来. 一.Vsftp安装与卸载 安装:yum install vsftpd 卸载:yum remove ...

  5. ArrayList线程不安全怎么办?(CopyOnWriteArrayList详解)

    ArrayList线程不安全怎么办? 有三种解决方法: 使用对应的 Vector 类,这个类中的所有方法都加上了 synchronized 关键字 就和 HashMap 和 HashTable 的关系 ...

  6. linux》centos6.1.环境下发送邮件设置

    转自https://blog.csdn.net/bodybo/article/details/80817968 一. Sendmail安装 在CentOS下,sendmail一般默认是随操作系统一起安 ...

  7. Python - 面向对象编程 - super()

    前置知识 继承的详解:https://www.cnblogs.com/poloyy/p/15216652.html 子类方法的重写:https://www.cnblogs.com/poloyy/p/1 ...

  8. IO和零拷贝

    I/O介绍 I/O主要为:网络IO(本质是socket文件读取).磁盘IO 每次IO,都要经由两个阶段: 第一步:将数据从文件先加载至内核内存空间(缓冲区),等待数据准备完成,时间较长 第二步:将数据 ...

  9. 安装redis 6.0.6

    1.规划目录:下载目录.安装目录.redis数据目录mkdir -p /data/appmkdir -p /opt/redis_cluster/redis_6379/{conf,logs,pid}mk ...

  10. Vs code自动生成Doxygen格式注释

    前言 ​ 程序中注释的规范和统一性的重要性不言而喻,本文就推荐一种在用vscode编写代码时自动化生成标准化注释格式的方法,关于Doxygen规范及其使用可查看博文 代码注释规范之Doxygen. ​ ...