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

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

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

  1. import pandas as pd
  2. import datetime
  3. import matplotlib.pyplot as plt
  4. from keras.models import Sequential
  5. from keras.layers import Dense
  6. from keras.layers import LSTM
  7. import pandas as pd
  8. import os
  9. from keras.models import Sequential, load_model
  10. df = pd.read_excel(r"*\黄金期货历史价格.xlsx")
  11. df2 = df.iloc[::-1]
  12. dataset = df2["开盘"].values
  13. # 将整型变为float
  14. dataset = dataset.astype('float32')
  15. train_size = int(len(dataset) * 0.8)
  16. trainlist = dataset[:train_size]
  17. testlist = dataset[train_size:]
  18. import numpy as np
  19. def create_dataset(dataset, look_back):
  20. #这里的look_back与timestep相同
  21. dataX, dataY = [], []
  22. for i in range(len(dataset)-look_back-1):
  23. a = dataset[i:(i+look_back)]
  24. dataX.append(a)
  25. dataY.append(dataset[i + look_back])
  26. return np.array(dataX),np.array(dataY)
  27. look_back = 15
  28. trainX,trainY = create_dataset(trainlist,look_back)
  29. testX,testY = create_dataset(testlist,look_back)
  30. trainX = np.reshape(trainX, (trainX.shape[0], trainX.shape[1], 1))
  31. testX = np.reshape(testX, (testX.shape[0], testX.shape[1] ,1 ))
  32. # create and fit the LSTM network
  33. model = Sequential()
  34. model.add(LSTM(1024, input_shape=(None,1)))
  35. model.add(Dense(256, activation="relu"))
  36. model.add(Dense(128, activation="relu"))
  37. model.add(Dense(1))
  38. model.compile(loss='mean_squared_error', optimizer='adam')
  39. model.fit(trainX, trainY, epochs=100, batch_size=128, verbose=2)
  40. model.save(os.path.join(r"*\LSTM介绍","Test" + ".h5"))
  41. trainPredict = model.predict(trainX)
  42. testPredict = model.predict(testX)
  43. ## 绘图评价
  44. fig = plt.subplot()
  45. plt.plot(trainY, label = 'trainY' )
  46. plt.plot(trainPredict[1:], label = 'trainPredict')
  47. plt.plot(testY, label = 'testY')
  48. plt.plot(testPredict[1:], label = 'testPredict')
  49. plt.legend()
  50. plt.savefig(r"D:\PycharmProjects\pythonProject\LSTM介绍\Evaluation.pdf")
  51. plt.show()
  52. ## MSE
  53. from sklearn.metrics import r2_score, mean_squared_error
  54. c = testPredict.ravel()
  55. DNN_r2 = r2_score(testY, c)
  56. print('LSTM模型的R平方值为:',DNN_r2)
  57. DNN_MSE = mean_squared_error(testY, c)
  58. print('LSTM模型的MSE 值为:',DNN_MSE)
  59. ## 预测
  60. pre_df = pd.read_excel(r"D:\PycharmProjects\pythonProject\LSTM介绍\predict.xlsx")
  61. pre_df_x = np.array(pre_df["开盘"].iloc[::-1])
  62. pre_df_x = pre_df_x.reshape(1,25,1)
  63. Predict = model.predict(pre_df_x)
  64. 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. Leaflet 中 删除 一组 标记(Marker)

    动态显示一个标签: L.marker([obj.Y,obj.X]).addTo(map).bindPopup(obj.name).openPopup(); let layers=[]; let myG ...

  2. JDBC基础篇(MYSQL)——通过JDBC连接数据库的三种方式

    package day01_jdbc; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManage ...

  3. Mysql的undo、redo、binlog的区别

      与不同引擎的关系 核心作用 生命周期   日志类型 undo log 属于innodb引擎独有 回滚,保证事务的"原子性",事务日志  事务开始前,以类似"快照&qu ...

  4. SpEL表达式注入漏洞学习和回显poc研究

    目录 前言 环境 基础学习和回显实验 语法基础 回显实验 BufferedReader Scanner SpEL漏洞复现 低版本SpringBoot中IllegalStateException CVE ...

  5. SpringBoot博客开发之AOP日志处理

    日志处理: 需求分析 日志处理需要记录的是: 请求的URL 访问者IP 调用的方法 传入的参数 返回的内容 上面的内容要求在控制台和日志中输出. 在学习这部分知识的时候,真的感觉收获很多,在之前Spr ...

  6. 前缀和的n个神奇操作

    前情回顾 前缀和的基础用法戳这里->传送门 众所周知,简单的前缀和解决的一般都是静态查询的问题,例如区间和.区间积等 操作的时候也很简单,就是根据需要来维护一个数组,每次查询的时候就用到tr[r ...

  7. Docker | 入门 & 基础操作

    Dcoker 入门 确保docker 已经安装好了,如没有装好的可以参考:Docker | 安装 运行第一个容器 docker run -it ubuntu /bin/bash docker run ...

  8. Linux下查看哪个网口插了网线

    场景: 一台服务器有多个网卡,一个网卡有多个网口,当插了一根网线的时候,不知道网线是插在哪一个网口. 1.查看网口信息 2.查看网口是否插了网线(命令ethtool) 命令:ethtool + 网口名 ...

  9. Flask - 解决 app.run() 添加 host、port、debug 参数后运行不生效的问题

    问题背景 app.run() 添加了 host.port.debug 参数,运行后发现没有生效,咋肥事! 解决方案 要打开 debug 模式的话,勾选 FLASK_DEBUG 就好啦 再次运行,发现已 ...

  10. 看清Mysql执行计划的真面目

    ​  Explain语法 EXPLAIN SELECT -- 变体: 1. EXPLAIN EXTENDED SELECT -- 将执行计划"反编译"成SELECT语句,运行SHO ...