基于LSTM神经网络算法进行股票预测
训练数据
某个股票某年的K线数据:
https://whimpark.github.io/stocker.github.io/spider/klines/000001/1991.dat
所有股票的K线数据
https://github.com/whimpark/stocker.github.io.git
数据列
0日期/1开盘/2收盘/3最大/4最小/5交易量/6交易额/7振幅/8涨跌比率/9涨跌金额/10换手率
训练脚本
基于LSTM与Transfomer的股票预测模型
https://github.com/cmiao7-illinois/stock_prediction-based-on-lstm-and-transformer.git
项目介绍
股票行情是引导交易市场变化的一大重要因素,若能够掌握股票行情的走势,则对于个人和企业的投资都有巨大的帮助。然而,股票走势会受到多方因素的影响,因此难以从影响因素入手定量地进行衡量。但如今,借助于机器学习,可以通过搭建网络,学习一定规模的股票数据,通过网络训练,获取一个能够较为准确地预测股票行情的模型,很大程度地帮助我们掌握股票的走势。本项目便搭建了LSTM(长短期记忆网络)
成功地预测了股票的走势。
损失函数
python
# criterion=nn.L1Loss() ## L1范数损失 L1Loss
criterion=nn.MSELoss() ## 均方误差损失 MSELoss
# criterion=nn.MAELoss() ##
# criterion=nn.CrossEntropyLoss(weight=None,ignore_index=-100, reduction='mean') ## 交叉熵损失 CrossEntropyLoss
# criterion=nn.KLDivLoss(reduction='mean') ## KL 散度损失 KLDivLoss
# criterion=nn.BCELoss(weight=None, reduction='mean') ##二进制交叉熵损失 BCELoss
# criterion=nn.BCEWithLogitsLoss(weight=None, reduction='mean', pos_weight=None) ## BCEWithLogitsLoss
# criterion=nn.MarginRankingLoss(margin=0.0,reduction='mean')
# criterion=nn.HingeEmbeddingLoss(margin=1.0, reduction='mean')
# criterion=nn.MultiLabelMarginLoss(reduction='mean') ## 多标签分类损失 MultiLabelMarginLoss
# criterion=nn.SmoothL1Loss(reduction='mean') ## 平滑版L1损失 SmoothL1Loss
# criterion=nn.SoftMarginLoss(reduction='mean') ## 2分类的logistic损失 SoftMarginLoss
# criterion=nn.MultiLabelSoftMarginLoss(weight=None, reduction='mean') ## 多标签 one-versus-all 损失 MultiLabelSoftMarginLoss
# criterion=nn.CosineEmbeddingLoss(margin=0.0, reduction='mean') ## cosine 损失 CosineEmbeddingLoss
# criterion=nn.TripletMarginLoss(margin=1.0, p=2.0, eps=1e-06, swap=False, reduction='mean') ## 三元组损失 TripletMarginLoss
# criterion=nn.MultiMarginLoss(p=1, margin=1.0, weight=None, reduction='mean') ## 多类别分类的hinge损失 MultiMarginLoss
# criterion=nn.CTCLoss(blank=0, reduction='mean') ## 连接时序分类损失 CTCLoss
# criterion=nn.NLLLoss(weight=None, ignore_index=-100, reduction='mean') ## 负对数似然损失 NLLLoss
# criterion=nn.NLLLoss2d(weight=None, ignore_index=-100, reduction='mean') ## 对于图片输入的负对数似然损失. 它计算每个像素的负对数似然损失.
# criterion=nn.PoissonNLLLoss(log_input=True, full=False, eps=1e-08, reduction='mean') ## 目标值为泊松分布的负对数似然损失