长短期记忆(英语:Long Short-Term Memory,LSTM)神经网络,是一种时间递归神经网络(RNN),该网络适合于处理和预测时间序列中间隔和延迟非常长的重要事件,如股票价格预测和水文预报等。

第一步 数据获取、可视化与预处理

#************************ 导入所需的python库 **********************#

import sys

import warnings

if not sys.warnoptions:

warnings.simplefilter("ignore")

import datetime

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

from keras.models import Sequential

from keras.layers import Dense, Dropout, LSTM

from sklearn.preprocessing import MinMaxScaler

#************************************************************************#

#此文以印度的Tata Global Beverages公司股价变动为例,该公司总部位于 #

#印度加尔各答,是塔塔集团的子公司,世界第二大茶叶制造商#和分销商 #

#股价数据下载于 Quandl 数据库。 #

#************************************************************************#

df = pd.read_csv(r'C:\Users\Feng\Desktop\NSE-TATAGLOBAL11.csv')

#********* 查看一下该公司股票信息,开盘价、最高价、收盘价等 ********#

df.head(10)

该部分将输出

股价变化信息

#*************** 将索引设置为时间格式方便后续分析 ***************#

df['Date'] = pd.to_datetime(df.Date,format='%Y-%m-%d')

df.index = df['Date']

#****************** 查看一下近五年的收盘价变动 *****************#

plt.figure(figsize=(10,5))

plt.grid()

dstart = datetime.datetime(2013,1,1)

dstop = datetime.datetime(2019,1,1)

plt.ylim(100,350)

plt.xlim(dstart,dstop)

plt.plot(df['Close'], label='Close Price history')

plt.savefig(r'C:\Users\Feng\Desktop\TaTa股价变动.png',

dpi=300, bbox_inches='tight')

股价波动图

data = df.sort_index(ascending=True, axis=0)

new_data = pd.DataFrame(index=range(0,len(df)),

columns=['Date', 'Close'])

for i in range(0,len(data)):

new_data['Date'][i] = data['Date'][i]

new_data['Close'][i] = data['Close'][i]

#******************** 设置dataframe索引 ********************#

new_data.index = new_data.Date

new_data.drop('Date', axis=1, inplace=True)

#**************** 将数据分为训练集和测试集 ****************#

dataset = new_data.values

train = dataset[0:987,:]

valid = dataset[987:,:]

scaler = MinMaxScaler(feature_range=(0, 1))

scaled_data = scaler.fit_transform(dataset)

x_train, y_train = [], []

for i in range(60,len(train)):

x_train.append(scaled_data[i-60:i,0])

y_train.append(scaled_data[i,0])

x_train, y_train = np.array(x_train), np.array(y_train)

x_train = np.reshape(x_train, (x_train.shape[0],x_train.shape[1],1))

第二步 创建长短期记忆神经网络

model = Sequential()

#模型为3层,前两层五十个神经元,最后一层为输出层,仅一个神经元

model.add(LSTM(units=50, return_sequences=True,

input_shape=(x_train.shape[1],1)))

model.add(LSTM(units=50))

model.add(Dense(1))

#*******编译模型,以MSE为损失函数,adam优化算法 *******#

#****** 大多数情况下adam优化速度较快,结果也很好 *******#

model.compile(loss='mean_squared_error', optimizer='adam')

#************** 将训练集带入模型,开始训练 ***************#

model.fit(x_train, y_train, epochs=1, batch_size=1, verbose=2)

#该模型训练时间约50秒

#************ 应用训练好的模型预测股票信息 ************#

inputs = new_data[len(new_data) - len(valid) - 60:].values

inputs = inputs.reshape(-1,1)

inputs = scaler.transform(inputs)

X_test = []

for i in range(60,inputs.shape[0]):

X_test.append(inputs[i-60:i,0])

X_test = np.array(X_test)

X_test = np.reshape(X_test, (X_test.shape[0],X_test.shape[1],1))

closing_price = model.predict(X_test)

closing_price = scaler.inverse_transform(closing_price)

第三步 模型预测

#***** 此行代码是为了能够在图中显示中文,否则中文将显示为方框 *****#

plt.rcParams['font.sans-serif']=['SimHei']

plt.rc('font', size=12)

train = new_data[:987]

valid = new_data[987:]

valid['Predictions'] = closing_price

plt.figure(figsize=(8,6))

plt.title("Tata Global Beverages股票收盘价预测")

plt.grid()

plt.plot(train['Close'],color="blue",label="训练集")

plt.plot(valid['Close'],color="red",label="测试集")

plt.plot(valid['Predictions'],color="orange",label="预测结果")

plt.legend()

plt.ylim(100,350)

plt.xlim(dstart,dstop)

plt.savefig(r'C:\Users\Feng\Desktop\TaTa股价预测.png',

dpi=300, bbox_inches='tight')

模型预测结果

预测结果不错。

大家也可以尝试用长短期记忆神经网络对其他的时间序列进行预测。

如果您喜欢这篇文章,希望您能花一秒时间留下您的小手印 Thanks♪(・ω・)ノ

python神经网络预测股价_用Python预测股票价格变化相关推荐

  1. python神经网络训练数据_用Python从头开始实现一个神经网络

    注:本篇文章非原创,翻译自Implementing a Neural Network from Scratch in Python – An Introduction​www.wildml.com ...

  2. python预测股票价格_使用机器学习预测股票价格的愚蠢简便方法

    在这篇文章中,我展示了使用H2o.ai框架的机器学习,使用R语言进行股票价格预测的分步方法. 该框架也可以在Python中使用,但是,由于我对R更加熟悉,因此我将以该语言展示该教程. 您可能已经问过自 ...

  3. 使用python预测基金_使用python先知3 1创建预测

    使用python预测基金 This tutorial was created to democratize data science for business users (i.e., minimiz ...

  4. python天气预测算法_使用机器学习预测天气(第二部分)

    概述 这篇文章我们接着前一篇文章,使用Weather Underground网站获取到的数据,来继续探讨用机器学习的方法预测内布拉斯加州林肯市的天气 上一篇文章我们已经探讨了如何收集.整理.清洗数据. ...

  5. python预测糖尿病_实战 | 糖尿病预测项目

    项目介绍 这次我们要学习的项目是糖尿病的预测,数据保存在diabetes.csv文件中.数据一共有8个特征和1个标签: Pregnancies:怀孕次数Glucose:葡萄糖测试值BloodPress ...

  6. python画交互式地图_使用Python构建交互式地图-入门指南

    python画交互式地图 Welcome to The Beginner's Guide to Building Interactive Maps in Python 欢迎使用Python构建交互式地 ...

  7. python 命名实体识别_使用Python和Keras的有关命名实体识别(NER)的完整教程

    假设您是报纸行业的编辑,每天都会收到数千个故事.您将如何找到与体育,政治等特定领域相关的故事?您会讲完所有这些故事吗?无权利?一个可以帮助您划分为不同类别的系统怎么样?该系统还可以执行复杂的任务,例如 ...

  8. 时间序列预测 预测时间段_应用时间序列预测:美国住宅

    时间序列预测 预测时间段 1.简介 (1. Introduction) During these COVID19 months housing sector is rebounding rapidly ...

  9. 置信区间估计 预测区间估计_估计,预测和预测

    置信区间估计 预测区间估计 Estimation implies finding the optimal parameter using historical data whereas predict ...

最新文章

  1. 原创 | 《相机标定》深入理解原理与实战(一)
  2. 边结点结构体的定义及使用
  3. iOS 9音频应用播放音频之控制播放速度
  4. 收敛标准对卷积核数量最优值的影响
  5. boost::geometry::detail::overlay::get_ring用法的测试程序
  6. Spring过滤器组件自动扫描
  7. HDU1512 (左偏树)
  8. oracle数据库的字符集更改
  9. mysql有哪几种索引
  10. 剑指Offer 64 求1+2+...+n
  11. 微信红包系统设计方案
  12. 【SpringBoot】MultipartResolver文件解析器
  13. Bartender 的二维码QR Code出现编码错误:输入数据包含对所选编码无效的字符
  14. 3.1 jmeter 响应断言
  15. 添加 frida-gadget 到安卓应用(无须 root)
  16. 自制hdmi线一头改vga图_这8个习惯你不改,你这辈子都瘦不了!!
  17. 【Android】之屏幕适配
  18. E+H浊度传感器CUS52D-AA1BA3
  19. info()函数与describe函数
  20. matlab cosd,cos,acos,acosd

热门文章

  1. 大数据路线,大数据要学习什么知识技能
  2. 《魔兽世界》的魅力究竟在哪儿?
  3. 【CSDN】【自用】CSDN操作
  4. 带宽与码元的关系_数据速率、载波频率和带宽的关系
  5. the little scheme 代码
  6. HTML图片和多行文字并列显示
  7. 在打开文章时,判断用户是否点赞或者收藏,切换显示点赞收藏图标;
  8. 双精度改单精度c语言程序,C语言菜鸟基础教程之单精度浮点数与双精度浮点数...
  9. php去掉字符串带逗号前面的字符,php 怎么去掉字符串最后一个逗号
  10. ubuntu下如何查看opencv的版本