没有合适的资源?快使用搜索试试~ 我知道了~
首页用Python的长短期记忆神经网络进行时间序列预测
用Python的长短期记忆神经网络进行时间序列预测
5星 · 超过95%的资源 需积分: 47 102 下载量 3 浏览量
更新于2023-03-03
评论 9
收藏 1.57MB PDF 举报
长短期记忆递归神经网络具有学习长的观察序列的潜力。 这对于时间序列预测似乎非常不错,并且事实的确可能是这样的。 在本教程中,你将了解,如何对于一个一步单变量时序预测问题开发一个LSTM预测模型。 完成本教程后,您将知道: 如何为预测问题制定性能基准。 如何为一步时间序列预测设计一个强大的测试框架。 如何准备数据,开发和评估用于时间序列预测的LSTM递归神经网络。 1. 洗发水销售额数据集; 2. 测试设置; 3. 持续性模型预测; 4. LSTM数据准备; 5. LSTM模型开发; 6. LSTM预测; 7. 完整的LSTM例子; 8. 开发稳健的结果; 9. 教程扩展。
资源详情
资源评论
资源推荐
2020/8/14 用Python的长短期记忆神经网络进行时间序列预测 - 云+社区 - 腾讯云
https://cloud.tencent.com/developer/article/1040557 1/20
专栏首页 用Python的长短期记忆神经网络进行时间序列预测
作者介绍
QiqiHe
关注 专栏
文章
14
阅读量
30.4K
获赞
91
作者排名
1097
精选专题
云计算新趋势
Serverless浪潮已来,如何稳
坐潮头领先业界?
活动推荐
腾讯云自媒体分享计划
入驻云加社区,共享百万
资源包。
立即入驻
邀请作者加入自媒体计划
每月最高可拿1800元无门
槛代金券。
了解更多
目录
用Python的长短期记忆神经网络进行时间序
列预测
长短期记忆递归神经网络具有学习长的观察序列的潜力。
这对于时间序列预测似乎非常不错,并且事实的确可能是这样的。
在本教程中,你将了解,如何对于一个一步单变量时序预测问题开发一个LSTM预测模
型。
完成本教程后,您将知道:
让我们开始吧。
教程概述
这是一个很大的话题,我们的教程将会覆盖很多内容,快准备好吧!
本教程分为9个部分; 他们是:
1. 洗发水销售额数据集
2. 测试设置
3. 持续性模型预测
4. LSTM数据准备
5. LSTM模型开发
6. LSTM预测
7. 完整的LSTM例子
8. 开发稳健的结果
9. 教程扩展
Python环境
本教程假设您已经安装了Python SciPy环境。本教程可以使用Python 2或3。
您必须安装了Keras(2.0或更高版本)和TensorFlow或Theano其中一个的后端
本教程还假设您已经安装了scikit-learn,Pandas,与NumPy和Matplotlib库
如果你的环境需要帮助,请看这个帖子:
洗发水销售数据集
该数据集描述了3年期间洗发剂的月销售额。
这些单位是一个销售计数,有36个观测值。原始数据集归功于Makridakis,Wheelwright
和Hyndman(1998)。
您可以在这里下载和了解更多关于数据集的信息。
将数据集下载到当前工作目录,名称为“ shampoo-sales.csv ”。请注意,您可能需要删除
DataMarket添加的页脚信息。
2018-02-08 阅读 4.3K
如何为预测问题制定性能基准。
如何为一步时间序列预测设计一个强大的测试框架。
如何准备数据,开发和评估用于时间序列预测的LSTM递归神经网络。
更新于2017年5月:修复了invert_scale()函数中的错误,谢谢Max。
如何使用Anaconda设置Python环境进行机器学习和深度学习
腾讯产品运营
教程概述
Python环境
洗发水销售数据集
实验测试设置
持续性模型预测
LSTM数据准备
将时间序列转化为监督学习
将时间序列转换为平稳的
将时间序列按比例缩放
LSTM模型开发
LSTM预测
完整的LSTM例子
开发稳健结果
分享
9
0
专栏 问答 沙龙 团队主页 开发者手册 智能钛AI 腾讯云大学 TVP
写文章
提问 登录 注册
找文章 / 找答案 / 找技术大牛
备案 控制台腾讯云首页
菜单
2020/8/14 用Python的长短期记忆神经网络进行时间序列预测 - 云+社区 - 腾讯云
https://cloud.tencent.com/developer/article/1040557 2/20
下面的示例加载数据并绘制被加载的数据集的图形。
运行该示例将数据集加载为Pandas系列并输出前5行。
Month
1901-01-01 266.0
1901-02-01 145.9
1901-03-01 183.1
1901-04-01 119.3
1901-05-01 180.3
Name: Sales, dtype: float64
然后创建系列的折线图,显示出明显的增长趋势。
洗发水月销售量折线图
实验测试设置
我们将洗发水销售数据集分为两部分:训练集和测试集。
前两年的数据将用于训练数据集,剩余的一年数据将用于测试集。
例如:
# 将数据分为训练和测试两部分
X = series.values
train, test = X[0:-12], X[-12:]
我们将通过使用训练集来开发模型并在测试集上做出预测。
滚动预测,也称为前向模型验证,在这里将会被用到。
测试集的每个时间步都会被同一个预测模型预测一次。然后测试集中每一个实际值都会被
取出给预测模型使用,即对下一个时间步做出预测。
# load and plot dataset
from pandas import read_csv
from pandas import datetime
from matplotlib import pyplot
# 加载数据集
def parser(x):
return datetime.strptime('190'+x, '%Y-%m')
series = read_csv('shampoo-sales.csv', header=0, parse_dates=[0], inde
# 总结第一行
print(series.head())
# 绘制折线图
series.plot()
pyplot.show()
教程扩展
概要
分享
9
0
2020/8/14 用Python的长短期记忆神经网络进行时间序列预测 - 云+社区 - 腾讯云
https://cloud.tencent.com/developer/article/1040557 3/20
例如:
# 前向验证
history = [x for x in train]
predictions = list()
for i in range(len(test)):
# 作出预测...
这模拟了一个真实世界的情景,每个月都有新的洗发水销售额产生,并用于下个月的预
测。
最后,将收集关于测试数据集的所有预测,并计算误差分数以总结模型的性能。计算将使
用均方根误差(RMSE),因为它会惩罚较大的错误,并得出与预测数据相同单位的分
数,即月度洗发水销售额。
例如:
from sklearn.metrics import mean_squared_erro
rmse = sqrt(mean_squared_error(test, predictions))
print('RMSE: %.3f' % rmse)
持续性模型预测
持续性预测模型对于带有线性增长趋势的时间序列是一个好的基准预测。
持续性预测是使用前一时间步(t-1)的观测值预测当前时间步(t)的观测值。
我们可以通过从训练数据和历史积累的历史数据中获取最后一个观测数据,并用它预测当
前的时间步长来实现这一点。
例如:
# make prediction
yhat = history[-1]
我们将把所有的预测结果累加到一个数组中,以便将它们直接与测试数据集进行比较。
下面列出了如何用持续性模型预测洗发水销售数据集的完整示例。
运行该示例将基于测试数据集输出预测模型的RMSE,等于约136.
from pandas import read_csv
from pandas import datetime
from sklearn.metrics import mean_squared_erro
from math import sqrt
from matplotlib import pyplot
# 加载数据集
def parser(x):
return datetime.strptime('190'+x, '%Y-%m')
series = read_csv('shampoo-sales.csv', header=0, parse_dates=[0], inde
# 将数据分为训练和测试两部分
X = series.values
train, test = X[0:-12], X[-12:]
# 前向验证
history = [x for x in train]
predictions = list()
for i in range(len(test)):
# 作出预测
predictions.append(history[-1])
# 测试集中的观测值
history.append(test[i])
# 报告性能
rmse = sqrt(mean_squared_error(test, predictions))
print('RMSE: %.3f' % rmse)
# 绘制观测值和预测值对比的折线图
pyplot.plot(test)
pyplot.plot(predictions)
pyplot.show()
分享
9
0
2020/8/14 用Python的长短期记忆神经网络进行时间序列预测 - 云+社区 - 腾讯云
https://cloud.tencent.com/developer/article/1040557 4/20
RMSE: 136.761
还会创建测试数据集(蓝色)与预测值(橙色)的折线图,显示了文中持续性预测模型的
效果。
洗发水销售数据集的观测值和持续性模型预测值的对比
有关时间序列预测的持续性模型的更多信息,请参阅此文章:
现在我们已经有了数据集的性能基准,我们可以开始为数据开发一个LSTM模型
LSTM数据准备
在我们能够将LSTM模型拟合到数据集之前,我们必须对数据进行转换。
本节分为三个步骤:
1. 将时间序列转化为监督学习问题
2. 将时间序列转换为平稳时序。
3. 将观察结果转换成具体的比例。
将时间序列转化为监督学习
Keras中的LSTM模型假定您的数据分为输入(X)和输出(y)。
对于时间序列问题,我们可以通过使用上一个时间步(t-1)的观测值作为输入,以当前
时间步(t)的观测值作为输出来实现。
我们可以使用Pandas中的shift()函数来实现这个功能,这个功能会将一系列的所有值
按指定的位数推下去。我们需要一个位置的移位,这将成为输入变量。时间序列就是输出
变量。
然后,我们可以将这两个系列连接起来,创建一个DataFrame,以供监督学习。下压的系
列将在顶部有一个新的没有值的位置。NaN(非数字)值将被用在这个位置上。我们将用
0值代替这些NaN值,LSTM模型将不得不学习“该系列的起始”或“这里没有数据”这样的情
况,因为并没有观察到销售量为0的月份。
下面的代码定义了一个名为timeseries_to_supervised
()
的辅助函数。它需要一个原始
时间序列数据的NumPy数组和一个移位序列的滞后或数来创建并用作输入。
# 把一个序列作为一个监督学习问题
def timeseries_to_supervised(data, lag=1):
df = DataFrame(data)
columns = [df.shift(i) for i in range(1, lag+1)]
columns.append(df)
df = concat(columns, axis=1)
df.fillna(0, inplace=True)
return df
我们可以用我们加载的洗发水销售数据集来测试这个功能,并将其转换为监督学习问题。
如何使用Python进行时间序列预测的基线预测
分享
9
0
剩余19页未读,继续阅读
网迷
- 粉丝: 38
- 资源: 336
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论5