时间序列和深度学习(N的第1部分):基础知识

在我职业生涯的最后一部分,我有机会与在Python中具有强大技能的数据科学家合作。 在开始使用C / C ++之后,我的技术背景主要是JVM编程语言(但是我在职业生涯中不得不接触其他几种语言),因此这对我来说是一个很好的机会,至少可以在机器学习和深度学习空间。 几年后,我不再担任专职开发人员,而是转而担任其他职务,但这并没有阻止我追随对编程语言的热情,并全面接触技术,不仅因为我喜欢它,而且也因为我相信无论您扮演什么角色,在做出任何决定之前了解技术的可能性和局限性总是很重要的。
在这个新的一长串我会先分享一些我所学到的使用Python(通过深度学习做时间序列预测的事情KerasTensorflow ),最后我将提出一个跟进我的书,展示了如何对DL4J和/或Keras (带有或不带有Spark )执行相同的操作。 我将从今天开始介绍基本内容,然后再增加任何时候的复杂性。 对于本系列的所有文章,我将参考Python3。我将重点关注时间序列问题,并假设您拥有一个运行良好的Python 3环境,并且知道如何在其上安装库。 在第一部分中,在转向DL模型实现之前,我们将熟悉一些基本知识。 涉及的Python库是pandasmatplotlibscikit-learn 。 什么是时间序列? 它是按时间顺序索引的数字数据点的序列。 在过去的几年中,我已经处理(并且仍在处理)许多时间序列(如果在医疗保健,网络安全或制造业等行业工作,您可能无法期望如此),因此时间序列分析和预测对于我。 时间序列可以是单变量的(当它们呈现一维值时),也可以是多元的(当它们具有随时间变化的多个观测值时)。 在本系列的第一篇文章中,我将仅指单变量时间序列,以使对概念的理解尽可能容易。 在稍后的阶段,我们还将介绍多元时间序列。 当然我不能共享生产数据,因此我为这些第一篇文章选择了Kaggle中可用的公共数据集。 我要使用的数据集是“ 高级零售时间序列集合”的一部分,该集合美国人口普查局提供和维护。 作为每月零售贸易预先调查的一部分,可以使用不同的数据集,该数据可以指示零售和食品服务公司的销售情况。 我在这篇文章中所使用的一个包含与建筑材料以及园林设备供应商和经销商有关的零售。 首先要做的是将数据集加载到pandas DataFrame中。 数据集包含四个功能, 日期realtime_endrealtime_start 。 的 日期功能以字符串形式出现,其中包含格式为YYYY-MM-DD的日期。 我们需要将这些值转换为日期。 然后,我们可以为此定义一个函数,该函数将在加载时应用于日期值:

from pandas import datetime
def parser(x):

实际上,我们仅需要前两个功能( valuedate ),因此从CSV文件加载时,我们将丢弃其他两个功能。 我们还需要指定包含日期值和要应用的解析器功能的列:

from pandas import read_csv
features = ['date', 'value']

现在何时可以查看DataFrame中的行示例:

series.head()

输出应该是这样的:

日期
1992-01-01 10845 1992-02-01 10904 1992-03-01 10986 1992-04-01 10738 1992-05-01 10777 名称:值,dtype:int64

我们还可以通过matplotlib绘制时间序列:

series.plot()

深度学习

数据集包含1992年1月至今的每月零售数据。 我们需要将数据集分为训练和测试数据。 我们将使用70%的数据(从1992年到2010年的年份)进行培训,而其余30%(从2011年至今的年份)进行验证:

X = series.values
train, test = X[0:-98], X[-98:]

使用测试数据集评估时间序列预测模型的一种方法是所谓的前向验证。 不需要模型训练,因为基本上我们可以通过逐步逐步遍历测试数据集来获得预测。 用快速而肮脏的Python代码翻译的是:

history = [train_value for train_value in train]
predictions = list()
predictions.append(history[-1])

在向前验证的最后,如果我们在单个图表中绘制观测值和预测值:

import numpy as np
x_axis_values = np.arange(1, 99)
pyplot.plot(x_axis_values, test, label = 'Observed')

深度学习

情况一目了然。 但是,如果我们进行性能检查:

from sklearn.metrics import mean_squared_error
from math import sqrt
print('RMSE: %.3f' % rmse)

我们可以看到生成的RMSE(均方根偏差)不是很好:RMSE:518.697

在本系列的下一篇文章中,您将学习如何通过LSTM构建更健壮和高效的模型。

翻译自: https://www.javacodegeeks.com/2019/06/time-series-deep-learning-basic-stuff.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值