# LSTM,GRU和BiLSTM在股票价格预测中比较研究 **Repository Path**: scdow/LSTM_GRU_BiLSTM_shares ## Basic Information - **Project Name**: LSTM,GRU和BiLSTM在股票价格预测中比较研究 - **Description**: LSTM、GRU、BiLSTM预测股票价格比较。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2023-04-08 - **Last Updated**: 2023-04-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LSTM,GRU和BiLSTM在股票价格预测中比较研究 #### 介绍 本项目分别选择国内A股上海浦东发展银行(简称浦发银行,代码600000)和美股International Business Machines Corporation(简称IBM),其中浦发银行采用2008年1月1日到2020年12月31日的股票数据,共有3114条有效数据,数据来源于Tushare金融大数据平台。本项目选取该数据集的日期(date)、开盘价(open)、收盘价(close)、最高价(hign)、最低价(low)和成交量(volume)这6个特征进行实验。浦发银行的数据集除日期作为时间序列的索引以外,其他5个特征均作为自变量。IBM采用1990年1月2日到2018年11月15日的股票数据,共有7278条有效数据,数据来源于雅虎财经。本文选取该数据集的日期(date)、开盘价(open)、最高价(hign)、最低价(low)、 收盘价(close)、调整后的收盘价(Adj Close)和成交量(volume)这7个特征进行实验。IBM的数据集除日期作为时间序列的索引以外,其他6个特征均作为自变量。本次实验选择收盘价作为被预测的变量。 #### 数据的归一化 实验中各个特征在单位和量级上存在差异,比如股票价格和成交量之间量级差异巨大,会对实验最终预测结果产生影响。因此本文采用sklearn.preprocessing库中的MinMaxScaler方法将数据的特征缩放至0到1之间。这样既能提升模型精度,也能提升模型收敛速度。在实验过程中获得预测结果之后,还要将数据进行反归一化处理,之后才能进行股票价格预测和模型评估。 #### 数据划分 此处分别将浦发银行和IBM的整个实验数据集送入,设置循环核时间步(timestep)都为60,每个时间步输入特征个数分别为5和6。通过输入前60个交易日的数据,预测出第61天的收盘价。浦发银行归一化后的数据集按照2488:311:255的比例划分为训练集、验证集和测试集三个部分。IBM归一化后的数据集按照6550:364:304的比例的比例划分为训练集、验证集和测试集三个部分。划分出验证集的目的是方便进行调整模型的超参数以便优化各个模型之后再进行比较。 #### 调整超参数 调参主要还是根据损失函数的在验证集上进行比较。如果观察损失函数图像显示是过拟合的话,可以采取L1正则化与L2正则化、增大dropout、简化模型、增加数据量、early-stopping、数据增强等。欠拟合可以采取减小dropout、增大模型复杂程度、添加更多相关的特征、增大数据量等。 #### 模型比较 因为数据不一定服从正态分布,最好在多个数据集上或者交叉验证得到多个结果,对多个模型整体做 Friedman test和Nemenyi test,对两两模型之间做Wilcoxon Signed Ranks Test。