原文链接:http://tecdat.cn/?p=6663

此示例中,神经网络用于使用2011年4月至2013年2月期间的数据预测都柏林市议会公民办公室的能源消耗。

每日数据是通过总计每天提供的15分钟间隔的消耗量来创建的。

LSTM简介

LSTM(或长期短期存储器网络)允许分析具有长期依赖性的顺序或有序数据。当涉及到这项任务时,传统的神经网络不足,在这方面,LSTM将用于预测这种情况下的电力消耗模式。

与ARIMA等模型相比,LSTM的一个特殊优势是数据不一定需要是固定的(常数均值,方差和自相关),以便LSTM对其进行分析 - 即使这样做可能会导致性能提升。

自相关图,Dickey-Fuller测试和对数变换

为了确定我们的模型中是否存在平稳性:生成自相关和部分自相关图

进行Dickey-Fuller测试

对时间序列进行对数变换,并再次运行上述两个过程,以确定平稳性的变化(如果有的话)

首先,这是时间序列图:

据观察,波动性(或消费从一天到下一天的变化)非常高。在这方面,对数变换可以用于尝试稍微平滑该数据。在此之前,生成ACF和PACF图,并进行Dickey-Fuller测试。

自相关图

部分自相关图

自相关和部分自相关图都表现出显着的波动性,这意味着时间序列中的几个区间存在相关性。

运行Dickey-Fuller测试时,会产生以下结果:

当p值高于0.05时,不能拒绝非平稳性的零假设。

STD1

954.7248

4043.4302

0.23611754

变异系数(或平均值除以标准差)为0.236,表明该系列具有显着的波动性。

现在,数据被转换为对数格式。

虽然时间序列仍然不稳定,但当以对数格式表示时,偏差的大小略有下降:

此外,变异系数已显着下降至0.0319,这意味着与平均值相关的趋势的可变性显着低于先前。

STD2 = np.std(数据集)

mean2 = np.mean(数据集)

cv2 = std2 / mean2 #Cafficient of Variationstd2

0.26462445mean2

8.272395cv2

0.031988855

同样,在对数数据上生成ACF和PACF图,并再次进行Dickey-Fuller测试。

自相关图

偏自相关图

Dickey-Fuller测试

... print('\ t%s:%。3f'%(key,value))

1%:-3.440

5%: -  2.866

10%: -  2.569

Dickey-Fuller检验的p值降至0.0576。虽然这在技术上没有输入拒绝零假设所需的5%显着性阈值,但对数时间序列已显示基于CV度量的较低波动率,因此该时间序列用于LSTM的预测目的。

LSTM的时间序列分析

现在,LSTM模型本身用于预测目的。

数据处理

首先,导入相关库并执行数据处理

LSTM生成和预测

模型训练超过100个时期,并生成预测。

#生成LSTM网络

model = Sequential()

model.add(LSTM(4,input_shape =(1,previous)))

model.fit(X_train,Y_train,epochs = 100,batch_size = 1,verbose = 2)

#生成预测

trainpred = model.predict(X_train)

#将预测转换回正常值

trainpred = scaler.inverse_transform(trainpred)

#calculate RMSE

trainScore = math.sqrt(mean_squared_error(Y_train [0],trainpred [:,0]))

#训练预测

trainpredPlot = np.empty_like(dataset)

#测试预测

#绘制所有预测

inversetransform,= plt.plot(scaler.inverse_transform(dataset))

准确性

该模型显示训练数据集的均方根误差为0.24,测试数据集的均方根误差为0.23。平均千瓦消耗量(以对数格式表示)为8.27,这意味着0.23的误差小于平均消耗量的3%。

以下是预测消费与实际消费量的关系图:

有趣的是,当在原始数据上生成预测(未转换为对数格式)时,会产生以下训练和测试错误:

在每天平均消耗4043千瓦的情况下,测试分数的均方误差占总日均消耗量的近20%,并且与对数数据产生的相比非常高。

也就是说,重要的是要记住,使用1天的先前数据进行预测,即Y表示时间t的消耗,而X表示时间t-1的消耗,由代码中的前一个变量设置先前。让我们来看看这增加到个究竟10和50天。

10天

50天

我们可以看到测试误差在10天和50天期间显着降低,并且考虑到LSTM模型在预测时考虑了更多的历史数据,消耗的波动性得到了更好的捕获。

鉴于数据是对数格式,现在可以通过获得数据的指数来获得预测的真实值。

例如,testpred变量用(1,-1)重新整形:

testpred.reshape(1,-1)

array([[7.7722197,8.277015,8.458941,8.455311,8.447589,8.445035,

......

8.425287,8.404881,8.457063,8.423954,7.98714,7.9003944,

8.240862,8.41654,8.423854,8.437414,8.397851,7.9047146]],

dtype = float32)

结论

对于这个例子,LSTM被证明在预测电力消耗波动方面非常准确。此外,以对数格式表示时间序列允许平滑数据的波动性并提高LSTM的预测准确度。

参考文献

1.在python中使用lstm和pytorch进行时间序列预测

2.python中利用长短期记忆模型lstm进行时间序列预测分析

3.使用r语言进行时间序列(arima,指数平滑)分析

4.r语言多元copula-garch-模型时间序列预测

5.r语言copulas和金融时间序列案例

6.使用r语言随机波动模型sv处理时间序列中的随机波动

7.r语言时间序列tar阈值自回归模型

8.r语言k-shape时间序列聚类方法对股票价格时间序列聚类

9.python3用arima模型进行时间序列预测

python短期预测图_Python中利用长短期记忆模型LSTM进行时间序列预测分析相关推荐

  1. python用电预测_Python中利用长短期记忆模型LSTM进行时间序列预测分析-预测电力消耗数据...

    此示例中,神经网络用于使用2011年4月至2013年2月期间的数据预测都柏林市议会公民办公室的能源消耗. 每日数据是通过总计每天提供的15分钟间隔的消耗量来创建的. LSTM简介 LSTM(或长期短期 ...

  2. Python中TensorFlow长短期记忆神经网络LSTM、指数移动平均法预测股票市场时间序列和可视化

    最近我们被客户要求撰写关于LSTM的研究报告,包括一些图形和统计输出. 本文探索Python中的长短期记忆(LSTM)网络,以及如何使用它们来进行股市预测. 相关视频:LSTM神经网络架构和工作原理及 ...

  3. 分类预测 | MATLAB实现CNN-LSTM(卷积长短期记忆神经网络)多特征分类预测

    分类预测 | MATLAB实现CNN-LSTM(卷积长短期记忆神经网络)多特征分类预测 目录 分类预测 | MATLAB实现CNN-LSTM(卷积长短期记忆神经网络)多特征分类预测 预测效果 基本介绍 ...

  4. 深度学习:长短期记忆模型LSTM

    http://blog.csdn.net/pipisorry/article/details/78361778 LSTM模型 长短期记忆模型(long-short term memory)是一种特殊的 ...

  5. python绘制qq图_Python中作QQ图(quantilequantile Plot)

    Q-Q图主要可以用来回答这些问题: 两组数据是否来自同一分布 PS:当然也可以用KS检验,利用python中scipy.stats.ks_2samp函数可以获得差值KS statistic和P值从而实 ...

  6. python海龟绘图颜色_python中利用turtle(海龟)绘图制作龟兔赛跑动画——仅供学习...

    python中利用turtle(海龟)绘图制作龟兔赛跑动画--仅供学习哦 首先,欢迎大家来我的博客当中浏览,由于我和我的可爱现在还都个初学者,所作的东西还不够完善,之前在学习计算机的各种语言的过程中, ...

  7. python redis 消息队列_python中利用redis构建任务队列(queue)

    Python中的使用标准queue模块就可以建立多进程使用的队列,但是使用redis和redis-queue(rq)模块使这一操作更加简单. Part 1. 比如首先我们使用队列来简单的储存数据:我们 ...

  8. 利用pytorch长短期记忆网络LSTM实现股票预测分析

    前言 大家好,我是阿光. 本专栏整理了<PyTorch深度学习项目实战100例>,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集. 正在更新 ...

  9. TensorFlow搭建LSTM实现时间序列预测(负荷预测)

    目录 I. 前言 II. 数据处理 III. 模型 IV. 训练/测试 V. 源码及数据 I. 前言 前面已经写过不少时间序列预测的文章: 深入理解PyTorch中LSTM的输入和输出(从input输 ...

最新文章

  1. 4月23日遇到的问题
  2. 【Mysql】纯sql报表
  3. Python如何安装包_Python系列学习笔记
  4. 怎么在前台取的ViewBag中的值
  5. MyBlog前端开发
  6. linux启动找不到内核,linux – PXE启动 – 在TFTP服务器上找不到内核
  7. LeetCode 623. Add One Row to Tree
  8. 转:libatk-bridge.so错误解决
  9. Jxl读写Excel文件
  10. iOS 报错 : dyld: Library not loaded: @rpath/
  11. 我的Qt作品(12)使用Qt+OpenCV实现一个带旋转角度的Shape形状匹配演示软件
  12. 基于Binder机制之AIDL原理分析
  13. 边境的悍匪—机器学习实战:第三章 分类
  14. printf如何按二进制格式打印
  15. 数组中重复的元素(剑指Offe.03)
  16. Go语言中间件框架 Negroni 的静态文件处理源码分析
  17. win10系统由于服务器出错翻译失败,win10系统下谷歌浏览器翻译失败怎么办
  18. RabbitMQ实现延迟消息
  19. OSCHINA博文抄袭检查
  20. 出海、上市,分众传媒还能再造一个“分众”吗?

热门文章

  1. [codevs 1906] 最长递增子序列问题
  2. crtsiii型无砟轨道板_为什么高铁轨道不像普快列车轨道那样铺碎石?
  3. python映射类型list_python中标准数据类型:数字 string(字符串) list(列表) tuple(元组) dict(字典) sets(集合)共同点和区别:...
  4. 并发编程-java内存模型
  5. uabntu18.04 安装mysql5.7
  6. Maven安装与配置——手把手教程
  7. HDU3507 Print Article —— 斜率优化DP
  8. 通过结构体某个成员的地址计算结构体首地址 (转)
  9. 用filter实现web程序的统一认证
  10. Java多线程-线程的同步与锁