python神经网络预测股价_用Python预测股票价格变化
长短期记忆(英语: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预测股票价格变化相关推荐
- python神经网络训练数据_用Python从头开始实现一个神经网络
注:本篇文章非原创,翻译自Implementing a Neural Network from Scratch in Python – An Introductionwww.wildml.com ...
- python预测股票价格_使用机器学习预测股票价格的愚蠢简便方法
在这篇文章中,我展示了使用H2o.ai框架的机器学习,使用R语言进行股票价格预测的分步方法. 该框架也可以在Python中使用,但是,由于我对R更加熟悉,因此我将以该语言展示该教程. 您可能已经问过自 ...
- 使用python预测基金_使用python先知3 1创建预测
使用python预测基金 This tutorial was created to democratize data science for business users (i.e., minimiz ...
- python天气预测算法_使用机器学习预测天气(第二部分)
概述 这篇文章我们接着前一篇文章,使用Weather Underground网站获取到的数据,来继续探讨用机器学习的方法预测内布拉斯加州林肯市的天气 上一篇文章我们已经探讨了如何收集.整理.清洗数据. ...
- python预测糖尿病_实战 | 糖尿病预测项目
项目介绍 这次我们要学习的项目是糖尿病的预测,数据保存在diabetes.csv文件中.数据一共有8个特征和1个标签: Pregnancies:怀孕次数Glucose:葡萄糖测试值BloodPress ...
- python画交互式地图_使用Python构建交互式地图-入门指南
python画交互式地图 Welcome to The Beginner's Guide to Building Interactive Maps in Python 欢迎使用Python构建交互式地 ...
- python 命名实体识别_使用Python和Keras的有关命名实体识别(NER)的完整教程
假设您是报纸行业的编辑,每天都会收到数千个故事.您将如何找到与体育,政治等特定领域相关的故事?您会讲完所有这些故事吗?无权利?一个可以帮助您划分为不同类别的系统怎么样?该系统还可以执行复杂的任务,例如 ...
- 时间序列预测 预测时间段_应用时间序列预测:美国住宅
时间序列预测 预测时间段 1.简介 (1. Introduction) During these COVID19 months housing sector is rebounding rapidly ...
- 置信区间估计 预测区间估计_估计,预测和预测
置信区间估计 预测区间估计 Estimation implies finding the optimal parameter using historical data whereas predict ...
最新文章
- 原创 | 《相机标定》深入理解原理与实战(一)
- 边结点结构体的定义及使用
- iOS 9音频应用播放音频之控制播放速度
- 收敛标准对卷积核数量最优值的影响
- boost::geometry::detail::overlay::get_ring用法的测试程序
- Spring过滤器组件自动扫描
- HDU1512 (左偏树)
- oracle数据库的字符集更改
- mysql有哪几种索引
- 剑指Offer 64 求1+2+...+n
- 微信红包系统设计方案
- 【SpringBoot】MultipartResolver文件解析器
- Bartender 的二维码QR Code出现编码错误:输入数据包含对所选编码无效的字符
- 3.1 jmeter 响应断言
- 添加 frida-gadget 到安卓应用(无须 root)
- 自制hdmi线一头改vga图_这8个习惯你不改,你这辈子都瘦不了!!
- 【Android】之屏幕适配
- E+H浊度传感器CUS52D-AA1BA3
- info()函数与describe函数
- matlab cosd,cos,acos,acosd