Python中使用LSTM网络进行时间序列预测

本文介绍如何使用Python和LSTM构建时间序列预测模型,通过洗发水销量数据集展示模型构建过程,包括数据预处理、模型训练和性能评估。教程详细讲解了数据的监督学习转化、静态化、区间转化以及LSTM模型的开发和预测,展示了如何通过LSTM进行单步时间序列预测,并与持续性模型进行了比较。
摘要由CSDN通过智能技术生成
Python中使用LSTM网络进行时间序列预测

原标题:AI 技术讲座精选:Python中使用LSTM网络进行时间序列预测

长短记忆型递归神经网络拥有学习长观察值序列的潜力。

它似乎是实现时间序列预测的完美方法,事实上,它可能就是。

在此教程中,你将学习如何构建解决单步单变量时间序列预测问题的LSTM预测模型。

在学习完此教程后,您将学会:

  • 如何为预测问题制定性能基准。

  • 如何为单步时间序列预测问题设计性能强劲的测试工具。

  • 如何准备数据以及创建并评测用于预测时间序列的LSTM 递归神经网络。

让我们开始吧。

Python中使用长短期记忆网络进行时间序列预测

Matt MacGillivray 拍摄,保留部分权利

教程概览

这是一个大课题,我们将深入讨论很多问题。请做好准备。

该教程分为 9 节;它们分别为:

  1. 洗发水销量数据集

  2. 测试设置

  3. 持续性模型预测

  4. LSTM数据准备

  5. LSTM 模型开发

  6. LSTM预测

  7. 完成LSTM 样本

  8. 得出稳定的结果

  9. 教程延伸

Python 环境

本教程假设您已安装 Python SciPy 环境。您在学习本教程时可使用 Python 2 或 3。

您必须使用 TensorFlow 或 Theano 后端安装 Keras(2.0或更高版本)。

本教程还假设您已安装 scikit-learn、Pandas、 NumPy 和 Matplotlib。

如果您在安装环境时需要帮助,请查看这篇文章:

  • 如何使用 Anaconda安装机器学习和深度学习所需的 Python 环境

    http://machinelearningmastery.com/setup-python-environment-machine-learning-deep-learning-anaconda/

洗发水销量数据集

该数据集描述某洗发水在3年内的月度销量。

数据单位为销售量,共有36个观察值。原始数据集由Makridakis、Wheelwright 和 Hyndman(1998)提供。

您可通过此链接下载和进一步了解该数据集:https://datamarket.com/data/set/22r0/sales-of-shampoo-over-a-three-year-period。

将该数据集下载至您当前的工作目录,并保存为“shampoo-sales.csv”。注意您可能需要删除 DataMarket 添加的脚注信息。

下方例子加载并生成已加载数据集的视图。

运行该示例,以 Pandas 序列的形式加载数据集,并打印出头5行。

然后生成显示增长持续性的序列线图。

洗发水月度销量数据集线图

试验测试设置

我们将把洗发水销量数据集分为两组:训练组和测试组。

前两年的销售数据将作为训练数据集,最后一年的数据将作为测试组。

例如:

使用训练数据集构建模型,然后对测试数据集进行预测。

我们将使用滚动预测的方式,也称为步进式模型验证。

以每次一个的形式运行测试数据集的每个时间步。使用模型对时间步作出预测,然后收集测试组生成的实际预期值,模型将利用这些预期值预测下一时间步。

例如:

这模拟了现实生活中的场景,新的洗发水销量观察值会在月底公布,然后被用于预测下月的销量。

最后,收集所有测试数据集的预测,计算误差值总结该模型的预测能力。采用均方根误差(RMSE)的原因是这种计算方式能够降低粗大误差对结果的影响,所得分数的单位和预测数据的单位相同,即洗发水月度销量。

例如:

持续性模型预测

对呈线性增长趋势的时间序列作出的准确的基线预测就是持续性化预测。

在持续性模型中,上一时间步(t-1)得到的观察值用于预测当前时间步(t)的观察值。

为了实现这一方法,我们可以从训练数据和步进验证积累的历史数据中收集上一次观察,然后用它来预测当前时间步。

例如:

我们将把所有预测累积在一个数组中,这样便可将它们与测试数据集进行直接比较。

洗发水

  • 5
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值