基于Python的循环神经网络股票价格预测

源码下载地址:https://download.csdn.net/download/sheziqiong/85630918
源码下载地址:https://download.csdn.net/download/sheziqiong/85630918

一、数据获取

1.1 训练过程中所有的股票日 K 数据均来自 tushare

import tushare

pro = ts.pro_api(token)
df = pro.daily(ts_code, start_date, end_date)
df.to_csv(filename)

二、 数据预处理

2.1 获取到的数据格式如图所示

2.2 特征选取

我选取了股票交易数据中几个有用的特征

特征说明
open开盘价
high最高价
low最低价
close收盘价
pre_close昨日收盘价
chagne涨跌额
pct_chg涨跌幅
vol成交量(手)
amount成交额(千元)

2.3 数据标准化或归一化

去除特征量纲,加速模型收敛,这里采用标准化处理。

2.4 生成时间序列

这里选取 30 天为一个时间序列,来预估低 31 天的 开盘价收盘价最高价最低价

def series_data(df, n):
    """
    将数据组装成时间序列
    :param df: DataFrame对像
    :param n: 时间序列长度
    :return: data, label 数据和标签的numpy数组对象
    """
    data = []
    label = []
    for i in range(len(df) - n):
        d = df[i:n + i].values
        l = df[n + i:n + i + 1][["open", "high", "low", "close"]].values
        data.append(d)
        label.append(l)
    return np.array(data), np.array(label)

三、神经网络结构

3.1 简单起见,这里采用一层循环的 LSTM + 全连接的输出层。

3.2 神经网络定义

class RNN(torch.nn.Module):
    def __init__(self, input_size):
        """
        循环神经网络实现,采用LSTM
        :param input_size: 输入的特征维度
        """
        super(RNN, self).__init__()
        self.rnn = torch.nn.LSTM(
            input_size=input_size,
            hidden_size=64,
            num_layers=1,
            batch_first=True
        )
        self.out = torch.nn.Sequential(
            torch.nn.Linear(64, 4)
        )

    def forward(self, x):
        """
        前向传播
        :param x: 输入数据
        :return:
        """
        r_out, (h_n, h_c) = self.rnn(x, None)
        out = self.out(r_out)
        return out

3.3 输入输出维度

输入

格式:(batch_size, series_length, input_dim)
实际取值

维度说明大小
batch_size批大小10
series_length序列长度30
input_dim特征维度9
输出

格式:(batch_size, series_length, output_dim)
实际取值

维度说明大小
batch_size批大小10
series_length序列长度30
output_dim输出维度4

实际取最后一个序列的输出与 label 进行损失计算

四、训练网络

五、验证


选取最高价的局部大图看一下

可以看到不管是训练集还是测试集都拟合完美,具体效果如何等待验证,个人感觉中长线趋势还是挺准的,短线偶尔也有一定的误差。
源码下载地址:https://download.csdn.net/download/sheziqiong/85630918
源码下载地址:https://download.csdn.net/download/sheziqiong/85630918

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值