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

本文介绍了基于历史数据利用深度学习预测股票价格的方法,探讨了同步预测(多层感知机)和异步预测(LSTM)在股票大盘指数预测中的应用。通过TensorFlow和Keras实现模型,实验结果显示异步预测的LSTM模型在预测准确性上优于同步预测的MLP模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

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

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

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

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

以下使用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实现同步预测,主要用到多层感知机(M

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值