这里数据是基于kaggle ,New York Stock Exchange 主要关注序列分析,当然真实炒股还要很多维度的分析,特别中国更要看宏观分析,比如kaggle有根据新闻数据辅助预测的比赛。真的炒股还需要各种操盘软件了。

总之股市有风险入市需谨慎,可以学习多角度分析。

数据读取

from __future__ import print_function

import numpy as np

import pandas as pd

import os

from subprocess import check_output

from keras.layers.core import Dense, Activation, Dropout

from keras.layers.recurrent import LSTM

from keras.models import Sequential

from sklearn.model_selection import train_test_split

import time #helper libraries

from sklearn.preprocessing import MinMaxScaler

import matplotlib.pyplot as plt

from numpy import newaxis

import warnings

warnings.filterwarnings("ignore")

def readData(path):

"""

使用pandas读取数据

"""

data = pd.read_csv(path)

cols = list(data.columns.values)

return data[cols]

if __name__ == "__main__":

# 设置显示格式

pd.set_option('display.width', 1000)

homePath = os.path.dirname(os.path.abspath('__file__'))

# Windows下的存储路径与Linux并不相同

if os.name == "nt":

dataPath = "%s\\prices.csv" % homePath

else:

dataPath = "%s/prices.csv" % homePath

prices = readData(dataPath)

可以看数据,是基本的股票数据,包括开盘价,收盘价,最低价,最高价,交易量等。

取一只雅虎股票来分析,

yahoo = prices[prices['symbol']=='YHOO']

yahoo_stock_prices = yahoo.close.values.astype('float32') #取收盘价

yahoo_stock_prices = yahoo_stock_prices.reshape(1762, 1) #转为数组

yahoo_stock_prices.shape

#查看价格趋势

print(yahoo.head())

plt.plot(yahoo_stock_prices)

plt.show()

image.png

分训练测试集

train_size = int(len(yahoo_stock_prices) * 0.80) #前80%数据作为训练

test_size = len(yahoo_stock_prices) - train_size

train, test = yahoo_stock_prices[0:train_size,:], yahoo_stock_prices[train_size:len(yahoo_stock_prices),:]

print(len(train), len(test))

将数组转换为数据的矩阵

def create_dataset(dataset, look_back=1): #look_back默认为1表示预测一天后的

dataX, dataY = [], [] #dataX为原始数据列,y就是它下一天的值,转为自回归问题。

for i in range(len(dataset)-look_back-1):

a = dataset[i:(i+look_back), 0] #t+look_bak时刻之前的数据

dataX.append(a)

dataY.append(dataset[i + look_back, 0]) #t+look_back的数据

return np.array(dataX), np.array(dataY)

# reshape into X=t and Y=t+1

#t时刻以及t前的数据预测t+1时刻的值

look_back = 1

trainX, trainY = create_dataset(train, look_back)

testX, testY = create_dataset(test, look_back)

转为矩阵格式

trainX = trainX.reshape(trainX.shape[0], 1, trainX.shape[1])

testX = testX.reshape(testX.shape[0], 1, testX.shape[1])

trainX.shape

建模

model = Sequential() #初始化序列模型

model.add(LSTM(

input_dim=1,

output_dim=50,

return_sequences=True))

model.add(Dropout(0.2))

model.add(LSTM(

100,

return_sequences=False))

model.add(Dropout(0.2))

model.add(Dense(

output_dim=1))

model.add(Activation('linear'))

start = time.time()

model.compile(loss='mse', optimizer='rmsprop')

print ('compilation time : ', time.time() - start)

训练

model.fit(

trainX,

trainY,

batch_size=128,

nb_epoch=10,

validation_split=0.05)

def plot_results_multiple(predicted_data, true_data,length):

plt.plot(scaler.inverse_transform(true_data.reshape(-1, 1))[length:])

plt.plot(scaler.inverse_transform(np.array(predicted_data).reshape(-1, 1))[length:])

plt.show()

#predict lenght consecutive values from a real one

def predict_sequences_multiple(model, firstValue,length):

prediction_seqs = []

curr_frame = firstValue

for i in range(length):

predicted = []

print(model.predict(curr_frame[newaxis,:,:]))

predicted.append(model.predict(curr_frame[newaxis,:,:])[0,0])

curr_frame = curr_frame[0:]

curr_frame = np.insert(curr_frame[0:], i+1, predicted[-1], axis=0)

prediction_seqs.append(predicted[-1])

return prediction_seqs

predict_length=5

predictions = predict_sequences_multiple(model, testX[0], predict_length)

print(scaler.inverse_transform(np.array(predictions).reshape(-1, 1)))

plot_results_multiple(predictions, testY, predict_length)

python炒股学习软件_要炒股,学Python-LSTM学习相关推荐

  1. 小学生python编程写游戏_小学生开始学Python,开发AI的首选编程语言:推荐一波Python书单...

    AlphaGo 都在使用的 Python 语言,是最接近 AI 的编程语言. 教育部考试中心近日发布了"关于全国计算机等级(NCRE)体系调整"的通知,决定自2018年3月起,在全 ...

  2. python积木编程软件_最新海龟编辑器(Python编辑器)v0.6.1 官方版下载地址电脑版-锐品软件...

    海龟编辑器是编程猫推出的一款Python编辑器,专门针对少儿Python学习,让孩子通过简单的方式,爱上Python,学会Python,软件界面简洁,使用方便,想要快速学习Python的用户,不妨试试 ...

  3. python培训一般多久_零基础学python需要多久

    一:明确自己的学习目标.不管我们学习什么样的知识,都要对自己的学习目标有一个明确的认识.只有这样才能朝着目标持续的前进,少走弯路,从而在学习的过程中得到提升,享受整个学习的乐趣. 二:基础的Pytho ...

  4. python赋值运算符难理解_零基础学 Python(8)运算符 — 算术、比较、赋值、逻辑...

    Python 的运算符有:算术运算符.比较运算符.赋值运算符.逻辑运算符.成员运算符.位运算符.身份运算符.本章主要讲解 Python 的算术运算符.比较运算符.赋值运算符.逻辑运算符. 算术运算符 ...

  5. python中数据读写_【循序渐进学Python——文件中数据的读写以及操作】

    [循序渐进学Python--文件中数据的读写以及操作] [循序渐进学Python--文件中数据的读写以及操作] [循序渐进学Python--文件中数据的读写以及操作] 相信大家都想过自己有一天,可以用 ...

  6. Python 图像 一样大小_#带你学Python# 表白利器:用Python发微信表情画-带你认识图片的秘密...

    首先感谢大家对上篇文章"python实现传染病模型"的肯定: 孙小白:#带你学Python# 疫情当前,在家没事?你也可以用Python预测疫情发展​zhuanlan.zhihu. ...

  7. python处在哪个阶段_如何在学Python的过程中更好地成长技术

    Python是一门编程语言,所以重点在于如何用好这门语言,只有能够做好项目,才能证明自己逐步掌握好了这门语言.在学习阶段,最终的目标是要尝试着自己用Python搭建一个网站,也算是对自己学习成果的一种 ...

  8. 高中必备学习软件_有哪些适合高中生的学习软件?

    先来推荐一波实质的干货推荐,必备软件!!! 『作文纸条』 这个APP真的要夸! 界面简洁,排版美观,每天都向你推送最新的素材,最重要的是里面有一群爱写作的大佬每天都在写作文!!!这么好的宝藏APP怎么 ...

  9. 32岁学python有前途吗_新手小白学Python有前途吗

    很多同学在选择学习python之初,可能都有这样的疑惑:学Python有前途吗?对于新兴的事物,人们慢慢接受是需要一个过程的,那究竟学python有没有前途呢?今天北大青鸟小编就来给大家指导一下迷津. ...

  10. python新手怎么入门_新手怎么学Python?Python入门必看!

    原标题:新手怎么学Python?Python入门必看! 作为新手,学习一门编程语言无疑是一头雾水,上海尚观科技为了让大家在学习Python编程的时候,有一个学习方向,在这里给大家分享了的方法,希望能帮 ...

最新文章

  1. 记录PCLVisualizer问题
  2. 袁哥写的漏洞研究方法总结
  3. substr vs substring
  4. mysql实现查询最近7天的数据
  5. 累积分布函数_C7: 概率函数和分布函数Distribution Function
  6. vs 常见问题汇总
  7. android webview 字体 系统字体大小,Android 系统字体大小动态改变,导致webview中显示不兼容的问题解决...
  8. 关于从EXCEL中导入到SQL server中的问题
  9. Vue组件间的传值五大场景,你造吗?
  10. 在shell脚本中使用*正则的问题
  11. QT 网络编程之https
  12. Pr剪辑上分攻略 -- 动漫电影混剪
  13. C/C++实现刮刮乐-刮奖区,刮出一套房
  14. csma研究背景_CSMA/CD协议的特点
  15. 交换机的工作模式:IVL和SVL
  16. 水井坊VS舍得酒业,谁是A股川酒“老三“?
  17. VS code 下载加速 中文设置 中英文切换 中文注释乱码
  18. Android开发 - PsyDuck说明书
  19. TextView(文本框)
  20. Python批量爬取王者荣耀英雄高清壁纸

热门文章

  1. 原神白铁矿位在哪里 原神白铁矿采集点位置分布图
  2. 四元数和欧拉角的个人理解
  3. [FROM WOJ]#2040 山贼集团
  4. 杭州旅游1-2日最佳路线
  5. JavaSE-Adventure(III): Generics 泛型程序设计
  6. 如何应用BIM技术加快项目进度?
  7. 一个对C#程序混淆加密,小巧但够用的小工具
  8. 4 种经典方法IB 数学证明题分享给大家
  9. 【Linux】常用工具的使用
  10. PCA主成分分析教程(origin分析绘制,无须R语言)