0 简介
今天学长向大家介绍一个机器视觉的毕设项目
毕业设计项目分享 LSTM股价预测
项目运行效果:
毕业设计 lstm股价预测
🧿 项目分享:见文末!
1 LSTM 神经网络
长短期记忆 (LSTM) 神经网络属于循环神经网络 (RNN) 的一种,特别适合处理和预测与时间序列相关的重要事件。以下面的句子作为一个上下文推测的例子:
“我从小在法国长大,我会说一口流利的??”
由于同一句话前面提到”法国“这个国家,且后面提到“说”这个动作。因此,LSTM便能从”法国“以及”说“这两个长短期记忆中重要的讯号推测出可能性较大的”法语“这个结果。
K线图与此类似,股价是随着时间的流动及重要讯号的出现而做出反应的:
-
在价稳量缩的盘整区间中突然出现一带量突破的大红K,表示股价可能要上涨了
-
在跳空缺口后出现岛状反转,表示股价可能要下跌了
-
在连涨几天的走势突然出现带有长上下影线的十字线,表示股价有反转的可能
LSTM 要做的事情就是找出一段时间区间的K棒当中有没有重要讯号(如带量红K)并学习预测之后股价的走势。
2 LSTM 股价预测实例
数据是以鸿海(2317)从2013年初到2017年底每天的开盘价、收盘价、最高价、最低价、以及成交量等数据。
首先将数据写入并存至pandas的DataFrame,另外对可能有N/A的row进行剔除:
数据写入:
import pandas as pd
foxconndf= pd.read_csv('./foxconn_2013-2017.csv', index_col=0 )
foxconndf.dropna(how='any',inplace=True)
為了避免原始数据太大或是太小没有统一的范围而导致 LSTM 在训练时难以收敛,我们以一个最小最大零一正规化方法对数据进行修正:
from sklearn import preprocessing
def normalize(df):
newdf= df.copy()
min_max_scaler = preprocessing.MinMaxScaler()
newdf['open'] = min_max_scaler.fit_transform(df.open.values.reshape(-1,1))
newdf['low'] = min_max_scaler