使用tushare社区完成了我的国创项目,总体来说,相关数据还是非常全的调用也比较方便。数据主要是用于训练模型,tushare社区可以方便的调用新闻标题数据,只是在免费的情况下调用速度太慢了,最后花了500大洋,但还是非常值得的。唯一不足的是没有发票,希望tushare社区做大做强以后,商品化的售卖自己的服务。(tushare ID:419949)
下面是项目《基于长短期记忆网络和语义分析技术的国内股价综合预测研究》的数据处理部分节选
3.1.数据处理
3.1.1数据选取
本文中输入的历史数据取自tushare社区,选取了2019年3月8日至2021年3月8日共两年的的大盘指数,指数日线行情数据以及A50指数和资金流向数据,并引入了上海银行间同业拆放利率(Shibor)以期提升模型预测准确程度。
由于股民的情感受新闻影响较大,故股民情感在一定程度上受新闻媒体情感影响。所以本文的文本数据选取新浪财经的A股模块新闻,使用 2019年3月8日至2021年3月8日共两年的新闻作为情感部分的输入
3.1.2.历史数据主成分分析
本文使用spssas软件对历史数据进行了主成分分析以期简化输入指标,最终大盘指数分析得出三个主成分,日线行情两个主成分,A50指数两个主成分,shibor两个主成分共九个主成分以及对应的系数矩阵。
3.1.3情感数据量化
本文通过构建了文本数据的量化模型对文本数据进行量化,并使用情绪变化指标将其归一化使其作为预测模型输入的一部分。
3.1.4 归一化处理
数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。
以下为本次深度学习训练选取的数据,可以观察选取数据集的首项数据:
[2.96908020e+03 3.02699250e+03 2.96358340e+03 3.02825430e+03 4.26213029e+08 4.04368420e+08 1.92370000e+00]
可以看出数据数值较大,在进行深度学习的时候对计算的要求较高,不利于进行计算。并且,在数据进行归一化后,最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解。如下为数据进行归一化前后的最优解寻优过程。
图3.1 归一化前
图3.2 归一化后
本次模型中对数据进行归一化的方法为:
x*=x-avgmax-min 公式(3-1)
(其中max为最大值,min为最小值,avg为平均值。)
经归一化后,所有数据均分布在[-1,1]区间内,减少计算消耗,加快数据寻优。
3.1.5 数据整合
在进行模型训练前,需要对日线指数数据与情感指数数据进行整合。在两个numpy矩阵进行组合时,要注意维度对应并且避开非工作日。
3.1.6 输入数据处理与输出数据反归一化
输入数据应分为train_data集和train_label集。train_data集为进行训练输入的九维数据,而train_label集为后一天的收盘价,为预测结果的标签。
LSTM网络是对时间序列数据进行预测,故应将输入数据修改为某连续几天的数据,输出才为后一天的收盘价。本模型的目标是通过前30个工作日的数据来预测下一天的情况,故输入数据矩阵的形状应为(30,9),输入标签矩阵的形状为(1)。
采用移动滑窗的方法创建数据集,将每30条数据合成一个数组,将其后一天的收盘价作为它的标签,接着向后移动一条数据,重复此操作,直到一天的最后一条数据作为标签为止。最后创建的数据集矩阵的形状应为(n,30,9),n为数据集中数据的个数。
输出数据时,我们期望能获得具体准确的数值,故要对输出预测结果进行反归一化,可以通过上文归一化公式得到反归一化公式,如下
x=max-minx*+avg 公式(3-2)
(最大值、最小值与平均值来源于之前存储。)
3.2情感分析模型搭建
情感分析模型通过统计文本数据的词频并通过词频数量将文本中蕴含信息进行量化。其主要分为三个部分:文本数据的获取,多方和看跌词典的构造以及指数构造部分。其中,文本数据的获取在前文已经介绍,本章将重点介绍后两部分内容。
3.2.1词典的构造
该模型利用jieba库和pkuseg库对从tushare获取的文本数据进行分词和词频统计,并通过与投资者常用词库的对比最终选取了以下词作为词典。
其中多方词典为:跟涨、涨幅、走高、走强、新高、回升、齐涨、反弹、盈利、高位、看好、上升、乐观、看涨、上涨、上行、高点、黑马、红盘、回暖、突破、涨幅、高开、高走、流入、强势、热点、支撑、利好、向上、暴涨、回升、买入、龙头、牛市、获利、收复、多方共38个关键词。
空方词典为:跟跌、跌幅、走低、走弱、新低、下跌、回落、缩量、风险、亏损、暴跌、跳水、大跌、弱势、低位、跌破、空头、下行、下探、低迷、阻力、下挫、失败、走低、卖出、黑色、下降、损失'共28个关键词。
3.2.2 指数构造部分
利用多方和空方两种词典作为统计关键词,对从tushare平台上获取的从2019年3月8日至2021年3月8日的新浪新闻A股板块新闻按天进行词频统计。利用下图投资者情绪变动公式进行量化。最后再将所得值按照日期输出到excel中,这样对于文本数据的量化完成。
投资方多方情绪指数=多方词频数/(多方词频数+空方词频数)
投资方空方情绪指数=空方词频数/(多方词频数+空方词频数)
投资方多方情绪变动指数=今日投资方多方情绪指数-上一日投资方多方情绪指数
投资方空方情绪变动指数=今日投资方空方情绪指数-上一日投资方空方情绪指数