赞
踩
本文旨在探讨如何利用TensorFlow和Keras中的LSTM神经网络来预测和检验股市价格时间序列数据,并通过Python编程语言和可视化技术来展示预测结果和异常检验的效果(点击文末“阅读原文”获取完整代码数据)。
相关视频
具体而言,本文将首先介绍LSTM神经网络的基本原理和TensorFlow、Keras框架的使用方法,然后通过实例详细阐述如何构建和训练LSTM神经网络模型,以及如何进行数据预处理、特征提取和模型评估。
本文将展示如何帮助客户应用该模型进行时间序列预测和股票价格数据进行异常点检测,并通过可视化技术来直观地呈现预测结果和异常点。最后,本文将对结果进行分析和讨论,并探讨该模型在实际应用中的潜力和挑战。
长短时记忆网络(Long Short-Term Memory,LSTM)是一种特殊的循环神经网络,它可以学习长期依赖关系,并在时间序列数据中捕捉到更多的历史信息。传统的RNN在处理长序列数据时,存在梯度消失或梯度爆炸的问题,而LSTM通过引入内部门控制结构解决了这个问题。
LSTM的核心组件包括输入门、遗忘门和输出门。输入门决定了哪些信息需要被存储到细胞状态中;遗忘门决定了哪些信息需要从细胞状态中删除;输出门决定了细胞状态中的信息如何与其他层交互。这三个门的输出都是一个向量,表示对相应操作的程度。
首先,安装所需的库:
- !pip install gdown
- !pip install tensorflow-gpu
绘制正弦波数据:
对数据进行预处理:
将数据集划分为训练集和测试集:
train_size = int(len(df) * 0.8)
输出:
800 200
定义一个函数,用于创建输入数据和标签:
首先,我们需要创建一个具有时间步长的数据集。在这个例子中,我们使用了10个时间步长。
- python
- time_steps = 10
-
- # 将数据重塑为 [samples, time_steps, n_features] 的形状
- X_train, y_train = create_dataset(train, train.sine, time_steps)
输出结果为:
(790, 10, 1) (790,)
接下来,我们构建一个模型。在这个例子中,我们使用了一个具有128个神经元的LSTM层,然后是一个具有1个神经元的全连接层。
- python
- optimizer=keras.optimizers.Adam(0.001))
现在,我们开始训练模型。我们设置了30个训练周期,批量大小为16,验证集比例为0.1。
训练过程中的损失值如下图所示:
接下来,我们评估模型的性能。我们绘制了训练损失和验证损失的曲线。
评估结果如下图所示:
最后,我们预测测试集上的值。
- python
- y_pred = model.predict(X_test)
我们绘制了历史数据、真实值和预测值的曲线。
点击标题查阅往期内容
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
左右滑动查看更多
01
02
03
04
这是一个使用TensorFlow和Keras进行时间序列预测的示例。首先,安装所需的库:
- !pip install gdown
- !pip install tensorflow-gpu
接下来,读取数据并设置索引:
df = pd.read_csv('spx.csv'
查看数据的前5行:
绘制收盘价:
- plt.plot(df, label='close price')
- plt.legend();
将数据分为训练集和测试集:
scaler = StandardScaler()
以上代码使用StandardScaler对训练集和测试集的收盘价进行了标准化处理。
这是一个函数,用于将数据集划分为输入和输出,输入为最近的time_steps个值,输出为接下来的一个值。
这里,我们定义了时间步长TIME_STEPS为30,然后使用create_dataset函数将训练集和测试集划分为输入和输出。最后,我们打印出训练集的形状,以便后续使用。
首先,我们定义了一个Sequential模型,并添加了一个LSTM层,单元数为64,输入形状为(X_train.shape[1], X_train.shape[2])。接着,我们添加了一个Dropout层,丢弃率为0.2,以减少过拟合。然后,我们添加了一个RepeatVector层,重复次数为X_train.shape[1]。再次,我们添加了一个LSTM层,单元数为64,返回序列为True。最后,我们添加了一个TimeDistributed层,其中的Dense层单元数为X_train.shape[2]。模型编译时,我们选择了均方误差作为损失函数,优化器为Adam。
model.compile(loss='mae', optimizer='adam')
接下来,我们使用model.fit()函数对模型进行训练。训练数据为X_train和y_train,训练轮数为10,批量大小为32,验证集比例为0.1,不打乱数据顺序。训练完成后,我们绘制了训练损失和验证损失随迭代次数的变化曲线,如图1所示。从图中可以看出,训练损失和验证损失都逐渐降低,说明模型在训练过程中逐渐收敛。
然后,我们使用模型预测训练数据,得到预测结果X_train_pred。计算预测结果与真实值之间的平均绝对误差,得到train_mae_loss。最后,我们使用seaborn库绘制了train_mae_loss的分布图,如图2所示。从图中可以看出,大部分样本的MAE损失集中在较小的范围内,说明模型在训练数据上的预测效果较好。
sns.distplot(train_mae_loss, bins=50, kde=True);
首先,我们需要将测试数据集的MAE损失值、阈值和收盘价等信息整合到一个DataFrame中,以便后续分析。这里的阈值为0.65。
接下来,我们绘制了损失值与时间的关系图,以及阈值与时间的关系图。
从图中可以看出,损失值在大部分时间内都低于阈值,说明模型的预测效果较好。
然后,我们筛选出了所有异常点(即损失值大于阈值的点)。
anomalie.head()
最后,我们将原始收盘价与异常点绘制在同一张图上,以便观察异常点在股价走势中的位置。
- plt.xticks(rotation=25)
- plt.legend();
从图中可以看出,异常点主要分布在股价波动较大的区域,这说明模型在预测股价波动较大的情况下可能存在一定的偏差。
资料获取
在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。
点击文末“阅读原文”
获取全文完整代码数据资料。
本文选自《TensorFlow、Keras的LSTM神经网络异常检验、预测股市价格时间序列数据可视化python实例附代码数据》。
点击标题查阅往期内容
Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测
结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析
深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据
PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据
Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化
Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析
R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
R语言深度学习:用keras神经网络回归模型预测时间序列数据
Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)
Python中用PyTorch机器学习神经网络分类预测银行客户流失模型
SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型
【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析
R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析
matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测
python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译
用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。