深度有趣 | 10 股票价格预测

简介

股票价格预测是一件非常唬人的事情,但如果只基于历史数据进行预测,显然完全不靠谱

股票价格是典型的时间序列数据(简称时序数据),会受到经济环境、政府政策、人为操作多种复杂因素的影响

不像气象数据那样具备明显的时间和季节性模式,例如一天之内和一年之内的气温变化等

尽管如此,以股票价格为例,介绍如何对时序数据进行预测,仍然值得一做

以下使用TensorFlow和Keras,对S&P 500股价数据进行分析和预测

数据

S&P 500股价数据爬取自Google Finance API,已经进行过缺失值处理

加载库,pandas主要用于数据清洗和整理

# -*- coding: utf-8 -*-

import pandas as pd
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.preprocessing import MinMaxScaler
import time

用pandas读取csv文件为DataFrame,并用describe()查看特征的数值分布

data = pd.read_csv('data_stocks.csv')
data.describe()

还可以用info()查看特征的概要

data.info()

数据共502列,41266行,502列分别为:

  • DATE:该行数据的时间戳
  • SP500:可以理解为大盘指数
  • 其他:可以理解为500支个股的股价

查看数据的前五行

data.head()

查看时间跨度

print(time.strftime('%Y-%m-%d', time.localtime(data['DATE'].max())), 
      time.strftime('%Y-%m-%d', time.localtime(data['DATE'].min())))

绘制大盘趋势折线图

plt.plot(data['SP500'])

去掉DATE一列,训练集测试集分割

data.drop('DATE', axis=1, inplace=True)
data_train = data.iloc[:int(data.shape[0] * 0.8), :]
data_test = data.iloc[int(data.shape[0] * 0.8):, :]
print(data_train.shape, data_test.shape)

数据归一化,只能使用data_train进行fit()

scaler = MinMaxScaler(feature_range=(-1, 1))
scaler.fit(data_train)
data_train = scaler.transform(data_train)
data_test = scaler.transform(data_test)

同步预测

同步预测是指,使用当前时刻的500支个股股价,预测当前时刻的大盘指数,即一个回归问题,输入共500维特征,输出一维,即[None, 500] => [None, 1]

使用TensorFlow实现同步预测,主要用到多层感知机(Multi-Layer Perceptron,MLP&#

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值