tushare ID:468684

一、开发环境:

  • 操作系统:Windows10
  • 开发工具:PyCharm 2021.1.1 (Professional Edition)
  • Python版本:Python3.6
  • 深度学习框架TensorFlow2.6.2
  • 数据来源:tushare
  • 使用的库:tushare、Numpy、tensorflow.keras.layers 、matplotlib.pyplot pandas 、sklearn.preprocessing、sklearn.metrics 、math、tensorflow 、tensorflow.python.client 、os

二、TensorFlow安装与简介

三、LSTM简介与动手实现

四、tushare简介与使用

五、代码实现

使用TensorFlow API:tf.keras搭建网络六步法:

  1. import
  2. train,test
  3. model=tf.keras.models.Sequential
  4. model.compile
  5. model.fit
  6. model.summary

第一步,导入相关包

import numpy as np
from tensorflow.keras.layers import Dropout, Dense, LSTM
import tushare as ts
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import mean_squared_error, mean_absolute_error
import math
import tensorflow as tf
from tensorflow.python.client import device_lib
import os

第二步,获取数据并划分训练集和测试集

df1 = ts.get_k_data('股票代码', ktype='D', start='开始日期', end='结束日期')
datapath1 = "./股票代码.csv"
df1.to_csv(datapath1)print(df1.head())data = pd.read_csv('./股票代码.csv')  # 读取股票文件
training_set = data.iloc[0:2426 - 300, 2:3].values  # 前(2426-300=2126)天的开盘价作为训练集,表格从0开始计数,2:3 是提取[2:3)列,前闭后开,故提取出C列开盘价
test_set =data.iloc[2426 - 300:, 2:3].values  # 后300天的开盘价作为测试集# 归一化
sc = MinMaxScaler(feature_range=(0, 1))  # 定义归一化:归一化到(0,1)之间
training_set_scaled = sc.fit_transform(training_set)  # 求得训练集的最大值,最小值这些训练集固有的属性,并在训练集上进行归一化
test_set = sc.transform(test_set)  # 利用训练集的属性对测试集进行归一化x_train = []
y_train = []x_test = []
y_test = []

第三步,model=tf.keras.models.Sequential

class MyModel(Model):

def __init__(self):

super(MyModel, self).__init__()

定义网络结构块

def call(self, x):

调用网络结构块,实现前向传播

return y

model = MyModel()

第四步,model.compile

model.compile(optimizer=tf.keras.optimizers.Adam(0.001),loss='mean_squared_error')  # 损失函数用均方误差
# 该应用只观测loss数值,不观测准确率,所以删去metrics选项,一会在每个epoch迭代显示时只显示loss值checkpoint_save_path = "./checkpoint/LSTM_stock.ckpt"if os.path.exists(checkpoint_save_path + '.index'):print('-------------load the model-----------------')model.load_weights(checkpoint_save_path)cp_callback = tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint_save_path,save_weights_only=True,save_best_only=True,monitor='val_loss')

第五步,model.fit

history = model.fit(x_train, y_train, batch_size=64, epochs=50, validation_data=(x_test, y_test), validation_freq=1,callbacks=[cp_callback])

第六步,model.summary

model.summary()

此外,还可以loss可视化

file = open('./weights_changyingjingmi.txt', 'w')  # 参数提取
for v in model.trainable_variables:file.write(str(v.name) + '\n')file.write(str(v.shape) + '\n')file.write(str(v.numpy()) + '\n')
file.close()loss = history.history['loss']
val_loss = history.history['val_loss']plt.plot(loss, label='Training Loss')
plt.plot(val_loss, label='Validation Loss')
plt.title('Training and Validation Loss')
plt.legend()
plt.show()################## predict ######################
# 测试集输入模型进行预测
predicted_stock_price = model.predict(x_test)
# 对预测数据还原---从(0,1)反归一化到原始范围
predicted_stock_price = sc.inverse_transform(predicted_stock_price)
# 对真实数据还原---从(0,1)反归一化到原始范围
real_stock_price = sc.inverse_transform(test_set[60:])
# 画出真实数据和预测数据的对比曲线
plt.plot(real_stock_price, color='red', label='XXXXX Stock Price')
plt.plot(predicted_stock_price, color='blue', label='Predicted XXXXX Stock Price')
plt.title('Changyingjingmi Stock Price Prediction(LSTM)')
plt.xlabel('Time')
plt.ylabel('XXXXX Stock Price')
plt.legend()
plt.show()##########evaluate##############
# calculate MSE 均方误差 ---> E[(预测值-真实值)^2] (预测值减真实值求平方后求均值)
mse = mean_squared_error(predicted_stock_price, real_stock_price)
# calculate RMSE 均方根误差--->sqrt[MSE]    (对均方误差开方)
rmse = math.sqrt(mean_squared_error(predicted_stock_price, real_stock_price))
# calculate MAE 平均绝对误差----->E[|预测值-真实值|](预测值减真实值求绝对值后求均值)
mae = mean_absolute_error(predicted_stock_price, real_stock_price)
print('均方误差: %.6f' % mse)
print('均方根误差: %.6f' % rmse)
print('平均绝对误差: %.6f' % mae)

运行效果截图:





参考文献:

1.Sepp Hochreiter,Jurgen Schmidhuber.LONG SHORT-TERM MEMORY.Neural Computation,December 1997

2.浙江大学慕课《深度学习》,胡浩基

3.北京大学慕课《人工智能实践:TensorFlow笔记》,曹健

4.知乎《LSTM模型结构的可视化》,master苏

5.复旦大学慕课《深度学习及其应用》,赵卫东,董亮

6.浙江大学慕课《人工智能:模型与算法》,吴飞

7.微信公众号数盟,《深度解析LSTM神经网络的设计原理》

使用深度学习中的循环神经网络(LSTM)进行股价预测相关推荐

  1. 深度学习中的循环神经网络LSTM详解

    (一).什么是循环神经网络LSTM? LSTM指的是长短期记忆网络(Long Short Term Memory),它是循环神经网络中最知名和成功的扩展.由于循环神经网络有梯度消失和梯度爆炸的问题,学 ...

  2. 深度学习 实验七 循环神经网络

    文章目录 深度学习 实验七 循环神经网络 一.问题描述 二.设计简要描述 三.程序清单 深度学习 实验七 循环神经网络 一.问题描述 之前见过的所以神经网络(比如全连接网络和卷积神经网络)都有一个主要 ...

  3. 【人工智能】图文详解深度学习中的卷积神经网络(CNN)

    [人工智能]图文详解深度学习中的卷积神经网络(CNN) 概念和原理 为什么要使用卷积神经网络? 卷积神经网络简介 卷积神经网络的数学公式 池化操作: 全连接层: 激活函数 卷积神经网络的 C++ 实现 ...

  4. 《深度学习》之 循环神经网络 原理 超详解

    循环神经网络 一.研究背景 1933年,西班牙神经生物学家Rafael Lorente de Nó发现大脑皮层(cerebral cortex)的解剖结构允许刺激在神经回路中循环传递,并由此提出反响回 ...

  5. 深度学习TensorFlow2,循环神经网络(RNN,LSTM)系列知识

    一:概述 二:时间序列 三:RNN 四:LSTM 一:概述 1.什么叫循环? 循环神经网络是一种不同于ResNet,VGG的网络结构,个人理解最大的特点就是:它通过权值共享,极大的减少了权值的参数量. ...

  6. 「NLP」 深度学习NLP开篇-循环神经网络(RNN)

    https://www.toutiao.com/a6714260714988503564/ 从这篇文章开始,有三AI-NLP专栏就要进入深度学习了.本文会介绍自然语言处理早期标志性的特征提取工具-循环 ...

  7. 【NLP】 深度学习NLP开篇-循环神经网络(RNN)

    从这篇文章开始,有三AI-NLP专栏就要进入深度学习了.本文会介绍自然语言处理早期标志性的特征提取工具-循环神经网络(RNN).首先,会介绍RNN提出的由来:然后,详细介绍RNN的模型结构,前向传播和 ...

  8. 《动手学深度学习》task3_3 循环神经网络进阶

    目录 GRU GRU 重置门和更新门 候选隐藏状态 隐藏状态 GRU的实现 载入数据集 初始化参数 GRU模型 训练模型 简洁实现 LSTM 长短期记忆 输入门.遗忘门和输出门 候选记忆细胞 记忆细胞 ...

  9. 3分钟带你理解深度学习中的RNN和LSTM究竟是什么?

    https://www.toutiao.com/a6688658948276355596/ 摘要 本文将介绍一种常用的神经网络-循环神经网络(Recurrent Neural Network,RNN) ...

最新文章

  1. 中国AI研究新突破,周六见!
  2. MySql 5.7 重置root密码
  3. 微软解释为什么Rust是系统编程的最佳选择
  4. 使用ORM提取数据很容易! 是吗?
  5. Redis集群搭建笔记
  6. Dynamic programming solving ULS
  7. 君子动手不动口,阿里云喊你做云上体验官啦!
  8. python做俄罗斯方块如何显示下一个随机方块_随机俄罗斯方块形状
  9. linux下的git 编辑器,vim - 如何让Git使用我选择的编辑器进行提交?
  10. AI学会了视觉推理,“脑补”看不清的物体 | 李佳李飞飞等的CVPR论文
  11. CVE-2020-15999:Chrome FreeType 字体库堆溢出原理分析
  12. 从切比雪夫不等式到大数定理
  13. shell死循环(whilefor)
  14. 日常笔记(持续更新)
  15. aqua data studio 连接db2
  16. 图像分割法-snake
  17. 明日之后手机正版服务器,明日之后能不能换区 明日之后手游渠道服怎么转换成网易官方服...
  18. win10误删的注册表能还原吗_误删注册表了怎么办?恢复win10误删的注册表的方法...
  19. 期末复习操作系统---设备管理
  20. 点晴信息技术告诉您点晴OA是如何做出色的免费OA系统

热门文章

  1. 集群架构之LVS介绍
  2. c语言百日刷题第四天
  3. 新手上路:ADAMS 基础知识讲解(图文并茂)【转载仿真论坛】
  4. Spring AOP理论 +代理模式详解
  5. 从spring boot到spring cloud(九)接口调试Swagger
  6. java-php-python-springboot网络记账设计服务端计算机毕业设计
  7. MOS管基本原理(整理)
  8. 配偶成为被执行人,你要注意哪些法律问题
  9. 解决二分类问题正确率始终在50%的解决办法(CatDog超详细)
  10. FLASH,FLV视频应用在JAVA系统下的解决方案