基于Keras用LSTM进行时间序列预测(二)

基于Keras搭建LSTM网络实现文本情感分类 LSTM实现情感分析 阅读详情

Kesci: Keras 实现 LSTM——时间序列预测

    博主之前参与的一个科研项目是用 LSTM 结合 Attention 机制依据作物生长期内气象环境因素预测作物产量。本篇博客将介绍如何用 keras 深度学习的框架搭建 LSTM 模型对时间序列做预测。所用项目和数据集来自:真实业界数据的时间序列预测挑战。

1 项目简单介绍

1.1 背景介绍

 

本项目的目标是建立内部与外部特征结合的多时序协同预测系统。数据集采用来自业界多组相关时间序列(约40组)与外部特征时间序列(约5组)。课题通过进行数据探索,特征工程,传统时序模型探索,机器学习模型探索,深度学习模型探索(RNN,LSTM等),算法结合,结果分析等步骤来学习时序预测问题的分析方法与实战流程。

1.2 数据集说明

 

** 训练数据有8列:**

- 日期 - 年: int
- 日期 - 月: int
- 日期 - 日: int, 时间跨度为2015年2月1日 - 2016年8月31日
- 当日最高气温 - 摄氏度(下同): float
- 当日最低气温: float
- 当日平均气温: float
- 当日平均湿度: float
- 输出 - float
预测数据没有输出部分,其他与预测一样。时间跨度为2016年9月1日 - 2016年11月30日
训练与预测都各自包含46组数据,每组数据代表不同数据源,组之间的温度与湿度信息一样而输出不同.

2 导入库并读取查看数据

#查看其中一个地区的训练数据
import pandas as pd
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, LSTM, Dropout
import matplotlib.pyplot as plt
% matplotlib inline
import glob, os
import seaborn as sns
import sys
from sklearn.preprocessing import MinMaxScaler
columns = ['YEAR','MONTH','DAY','TEMP_HIG','TEMP_COL','AVG_TEMP','AVG_WET','DATA_COL']
data = pd.read_csv('../input/industry/industry_timeseries/timeseries_train_data/1.csv', 
                      names=columns)
data.head()

# 查看数据采集区1的数据
plt.figure(figsize=(24,8))
for i in range(8):
    plt.subplot(8, 1, i+1)
    plt.plot(data.values[:, i])
    plt.title(columns[i], y=0.5, loc='right')
plt.show() 

3 数据预处理

3.1 时间序列数据转化为监督问题数据

def series_to_supervised(data, n_in=1, n_out=1, dropnan=True):
    n_vars = 1 if type(data) is list else data.shape[1]
    df = pd.DataFrame(data)
    cols, names = list(), list()
    # input sequence (t-n, ... t-1)
    for i in range(n_in, 0, -1):
        cols.append(df.shift(i))
        names += [('var%d(t-%d)' % (j+1, i)) for j in range(n_vars)]
    # forecast sequence (t, t+1, ... t+n)
    for i in range(0, n_out):
        cols.append(df.shift(-i))
        if i == 0:
            names += [('var%d(t)' % (j+1)) for j in range(n_vars)]
        else:
            names += [('var%d(t+%d)' % (j+1, i)) for j in range(n_vars)]
    # put it all together
    agg = pd.concat(cols, axis=1)
    agg.columns = names
    # drop rows with NaN values
    if dropnan:
        agg.dropna(inplace=True)
    return agg

关于上段代码的理解可以参考:How to Convert a Time Series to a Supervised Learning Problem in Python

 

# 将数据归一化到0-1之间,无量纲化
scaler = MinMaxScaler(feature_range=(0,1))
scaled_data = scaler.fit_transform(example[['DATA_COL','TEMP_HIG','TEMP_COL','AVG_TEMP','AVG_WET']].values)
# 将时序数据转换为监督问题数据
reframed = series_to_supervised(scaled_data, 1, 1)
#删除无用的label数据
reframed.drop(reframed.columns[[6,7,8,9]], axis=1, inplace=True)
print(redf.info())
redf.head()

3.2 数据集划分及规整

# 数据集划分,选取前400天的数据作为训练集,中间150天作为验证集,其余的作为测试集
train_days = 400
valid_days = 150
values = redf.values
train = values[:train_days, :]
valid = values[train_days:train_days+valid_days, :]
test = values[train_days+valid_days:, :]
train_X, train_y = train[:, :-1], train[:, -1]
valid_X, valid_y = valid[:, :-1], valid[:, -1]
test_X, test_y = test[:, :-1], test[:, -1]

# 将数据集重构为符合LSTM要求的数据格式,即 [样本,时间步,特征]
train_X = train_X.reshape((train_X.shape[0], 1, train_X.shape[1]))
valid_X = valid_X.reshape((valid_X.shape[0], 1, valid_X.shape[1]))
test_X = test_X.reshape((test_X.shape[0], 1, test_X.shape[1]))
print(train_X.shape, train_y.shape, valid_X.shape, valid_y.shape, test_X.shape, test_y.shape)
(400, 1, 5) (400,) (150, 1, 5) (150,) (27, 1, 5) (27,)

4 建立模型并训练

model1 = Sequential()
model1.add(LSTM(50, activation='relu',input_shape=(train_X.shape[1], train_X.shape[2]), return_sequences=True))
model1.add(Dense(1, activation='linear'))
model1.compile(loss='mean_squared_error', optimizer='adam') 
# fit network
LSTM = model.fit(train_X, train_y, epochs=100, batch_size=32, validation_data=(valid_X, valid_y), verbose=2, shuffle=False)
# plot history
plt.plot(LSTM.LSTM['loss'], label='train')
plt.plot(LSTM.LSTM['val_loss'], label='valid')
plt.legend()
plt.show()

5 模型预测并可视化

plt.figure(figsize=(24,8))
train_predict = model.predict(train_X)
valid_predict = model.predict(valid_X)
test_predict = model.predict(test_X)
plt.plot(values[:, -1], c='b')
plt.plot([x for x in train_predict], c='g')
plt.plot([None for _ in train_predict] + [x for x in valid_predict], c='y')
plt.plot([None for _ in train_predict] + [None for _ in valid_predict] + [x for x in test_predict], c='r')
plt.show()

蓝色曲线为真实输出

绿色曲线为训练数据的预测输出

黄色曲线为验证数据集的预测输出

红色曲线为测试数据的预测输出(能看出来模型预测效果还是比较好的)

6 小结

    本次只采用了一个地区的数据用来训练模型,在后续的工作中可以增加多任务学习内容。

 

文章来源: https://www.cnblogs.com/mtcnn/p/9411597.html

Kesci公众健康问句分类 决赛第8名解决方案 0. 前言 前段时间参加了Kesci的公众健康问句分类比赛,主要是一个健康领域的多标签分类问题。除去前面弃权的一些小伙伴,有幸拿到了决赛的第8名,记录一下自己的比赛经历,希望对大家有所帮助。 github链接,欢迎start~ 1. 任务分析 1.1问题背景 随着健康医疗信息化的发展以及云计算、物联网、移动智能等技术在健康医疗领域的广泛应用,医疗行业汇聚了大量可以发挥出实际价值的海量的医学数据。这些医学数据是医疗研究与进步的基石。 1.2相关工作 多标签分类,首先是一个文本分类任务,然后是一个多标签的任务。 阅读详情

相关推荐

使用Keras实现 基于注意力机制(Attention)的 LSTM 时间序列预测

时隔半年多,毕设男孩终于重操旧业,回到了 LSTM进行时间序列预测和异常检测的路上。 如果有阅读过我之前的博客,可以发现使用 LSTM作单类的时间序列异常检测也是基于对于时间序列的预测进行 登堂入室LSTM:使用LSTM进行简单的时间序列异常检测 本次我们要进行的是 使用 注意力机制 + LSTM 进行时间序列预测,项目地址为Keras Attention Mechanism 首先我们把它git...

小EZ的博客 6万+

Kesci: Keras 实现 LSTM——时间序列预测

    博主之前参与的一个科研项目是用 LSTM 结合 Attention 机制依据作物生长期内气象环境因素预测作物产量。本篇博客将介绍如何用 keras 深度学习的框架搭建 LSTM 模型对时间序列做预测。所用项目和数据集来自:真实业界数据的时间序列预测挑战。1 项目简单介绍1.1 背景介绍本项目的目标是建立内部与外部特征结合的多时序协同预测系统。数据集采用来自业界多组相关时间序列(约40组)与...

U R MINE 9719

基于 Keras 用 LSTM 网络做时间序列预测

作者:徐瑞龙,量化分析师博客专栏:https://www.cnblogs.com/xuruilong100前文推送:时间序列分析工具箱——timetk基于 Keras 用...

R语言中文社区 1万+

LSTM函数详解(keras)

原文链接:https://www.zhihu.com/question/64470274 https://blog.youkuaiyun.com/jiangpeng59/article/details/77646186 跑试验的间隙,遇到了同样的困惑,看了一圈答案之后,想明白了。再来给大家白话解释一遍。根据Keras 官方文档的函数定义:keras.layers.LSTM(units, activation='tanh', recurrent_activation='sigmoid', ....units: Posit

qq_43703185的博客 1万+

Keras LSTM实现多维输入输出时序预测实践详解

自古以来,我们就希望预知未来,现如今,随着大数据人工智能技术的发展,我们早已经不满足传统的同比、环比等数据分析方法,但是时间序列趋势预测的传统算法又很专业,很难用于日常生产经营中。 深度学习神经网络为我们提供较为通用的解决方案,我们将在这里实践基于Python Keras LSTM多维输入输出时序预测模型。

肖永威的专栏 1万+

python利用LSTM进行时间序列分析预测

关键词:python、Keras、LSTM、Time-Series-Prediction      关于理论部分,可以参考这两篇文章(RNN、LSTM),本文主要从数据、代码角度,利用LSTM进行时间序列预测。(1)原始时间序列数据(只列出了18行)1455.219971 1399.420044 1402.109985 1403.449951 1441.469971 1457.599976 14

雪伦的专栏 8万+

在Keras中使用LSTM模型进行多变量时间序列预测

今天我给大家介绍一个国外深度学习大牛Jason Brownlee写的一篇关于多变量时间序列预测的博客,我在原文的代码基础上做了一点点修改,只是为了便于大家更好的理解。在本文中,您将了解如何在Keras深度学习库中为多变量时间序列预测开发LSTM模型。读完成本文后,您将了解: 如何将原始数据集转换为可用于时间序列预测的数据。 如何准备数据并使LSTM适合多变量时间序列预测问题。 如何进行预测并...

weixin_42608414的博客 1万+

基于Keras的LSTM进行电力负荷预测

    首先,在之前毫无深度学习基础的情况下,花费了近11小时(包括在火车上读了一小时代码),最终完成本次大作业。    接下来这篇文章将完整叙述一个只有linux基础的菜鸟是如何完成这项大作业任务的。    文章也不再以严谨的科技论文写作格式进行,同时代码将托管在github上,文章同时发布在优快云上,谨以此希望更多的中国学生可以将自己的成果,在不泄密的情况下,敢于分享,让更多人受益,交流,d...

weixin_42489987的博客 3万+

基于Keras用LSTM进行时间序列预测(一)

如何基于Keras和Tensorflow用LSTM进行时间序列预测 李倩 发表于 2018-09-06 08:53:16 论智 +关注 编者按:本文将介绍如何基于Keras和Tensorflow,用LSTM进行时间序列预测。文章数据来自股票市场数据集,目标是提供股票价格的动量指标。 GitHub:github.com/jaungiers/LSTM-Neural-Network-for...

Poo_Chai的博客 2万+

Keras实现RNN和LSTM做回归预测(python)

学习了RNN和LSTM的理论知识,下面再来使用Keras实现一下这些模型。 理论知识: 循环神经网络(RNN) LSTM神经网络和GRU Keras实现神经网络: Keras实现全连接神经网络(python) Keras的安装过程: Tensorflow和Keras版本对照及环境安装 1. 环境准备 import matplotlib.pyplot as plt from math import sqrt from matplotlib import pyplot import pandas a

小朱小朱绝不认输的博客 1万+

LSTM时间序列预测实现

我们将使用前几个时间步的销售额数据作为输入特征,然后使用下一个时间步的销售额作为目标变量。我们将使用前几个时间步的销售额数据作为输入特征,然后使用下一个时间步的销售额作为目标变量。为此,我们需要提供前几个时间步的销售额数据作为输入,然后使用模型预测下一个时间步的销售额。为此,我们需要提供前几个时间步的销售额数据作为输入,然后使用模型预测下一个时间步的销售额。在训练模型之后,我们可以使用测试集上的数据进行预测,并评估模型的性能。在训练模型之后,我们可以使用测试集上的数据进行预测,并评估模型的性能。

VnReact的博客 200

【keras】利用LSTM进行单变量时间序列预测和多变量时间序列预测

        对于较为简单的时间序列预测问题,可以使用Exponential Smoothing和ARIMA等传统模型非常方便地求解。然而,对于复杂的时间序列预测问题,LSTM不失为一种很好的选择。因此,本文旨在探讨如何利用LSTM神经网络求解时间序列预测问题。首先,需要明白时间序列预测问题是如何转换为传统的监督学习问题的,即时间窗方法。有关时间序列预测问题转换为监督学习的过程请移步:Time ...

XYZ 3万+

硬件原理图分析

文章目录1 硬件原理图分析1.1 MCU部分1.2 NB部分1.3 电源部分 1 硬件原理图分析 1.1 MCU部分 MCU接口部分没啥需要注意,都是常规操作。 1.2 NB部分 U4是用来防静电的。 由于NB的以上几个引脚只支持1.8V,所以这里需要3.3V转1.8V的电路。只要把握住谁改变电平就好分析是怎么实现电平转换的了。 1.3 电源部分 图中的MOS是用来实现USB和电池同时插入时只能USB供电功能的。 ...

木子皿--啥都不会的菜鸟 8170

基于Keras的LSTM多变量时间序列预测

长短期记忆循环神经网络等几乎可以完美地模拟多个输入变量的问题,这为时间序列预测带来极大益处。本文介绍了如何在 Keras 深度学习库中搭建用于多变量时间序列预测的 LSTM 模型。 诸如长短期记忆(LSTM)循环神经网络的神经神经网络几乎可以无缝建模具备多个输入变量的问题。 这为时间序列预测带来极大益处,因为经典线性方法难以适应多变量或多输入预测问题。 通过本教程,你

机器之心 1万+

分位数映射数据后处理-Quantile Mapping后处理 (R语言)

统计后处理器基本上是统计模型,将观察到的关注变量与从气象或水文模型的直接模型输出(DMO)导出的适当预测变量相关联。统计后处理的重要性早已在气象预报中得到认可。早期的工作包括完善的预测(perfect prognosis),模型输出统计(MOS)和模拟方法(analog method)等模型。 近年来,已经提出了许多其他后处理方法,包括秩直方图校准(rank histogram calibrati...

水滴石穿,绳锯木断 1万+

图形学基础|基于SDF的卡通阴影图

图形学基础|基于SDF的卡通阴影图 文章目录图形学基础|基于SDF的卡通阴影图一、前言二、SDF(Signed Distance Field)三、阴影图生成3.1 SDF生成3.2 插值参考博文 一、前言 回顾之前做的卡通渲染,角色面部阴影是靠一张阴影贴图实现的。 为了更好地控制角色的脸部阴影,通过计算脸部朝向与光照方向的夹角和一张单色的FaceMap来判断。 FaceMap的每个像素表示:该像素判断为阴影时候需要达到的夹角。 例如: 当方向光正对角色的时候,夹角为0°,对应的值为0,此时,FaceMap

【黑键】 1万+

多元时间序列预测之LSTM的实现

多元时间序列预测之LSTM的实现keras简单介绍多变量LSTM预测模型 本文使用keras库实现基于LSTM的多元时间序列预测问题。所谓多元时间序列预测,是指根据多个变量之间的关系预测他们下一时刻的值。 本文仅搭建LSTM模型进行预测,数据的预处理部分自行完成。 keras简单介绍 keras是一个极简的、高度模块化的神经网络库,可以运行在tensorflow上,具体可看keras中文文档。 具体安装可在网上搜索,非常简单。 多变量LSTM预测模型 1.导入所需的包 from math import sq

weixin_43699616的博客 1万+

HT7036计量芯片SPI通信与数据读取实战解析

本文详细解析HT7036计量芯片的SPI通信与数据读取实战,涵盖SPI时序配置、命令发送、数据读取及常见问题排查。重点介绍如何通过SPI接口与MCU通信,实现电能数据的稳定采集与处理,为智能电表等应用提供实用解决方案。

vscode5coder的博客 264

基于Keras的LSTM多变量时间序列股票预测

朋友多次劝我,用大数据人工智能研究下金融股票,由于本人水平有限,一直没有去想。最近两天,突然想到LSTM是不是很适合做股票预测,本文使用基于Keras框架LSTM多变量时间序列股票预测。

肖永威的专栏 1万+

5G核心网Framed Routing功能解析:基于PFCP的帧路由机制与多终端互联实践

5G核心网Framed Routing功能解析:基于PFCP的帧路由机制与多终端互联实践

大家好,我是码农老gou,一名专注于编程技术的程序员。在这个博客中,我将与大家分享我在工作和学习中的经验、见解以及一些实用的技术干货。 1464

OnePlus线刷救砖与OTA全量包:从故障恢复到系统升级的完整指南

本文详细介绍了OnePlus手机线刷救砖与OTA全量包的完整操作指南,包括故障诊断、线刷救砖实战教程、OTA全量包升级优势及进阶玩法。通过具体案例和实用技巧,帮助用户从系统故障恢复到安全升级,特别适合Android系统爱好者和OnePlus用户。

weixin_30338481的博客 618

时间序列预测——LSTM模型(附代码实现)

长短时记忆网络( Long short-term memory,LSTM )是一种循环神经网络 (Recurrent neural network, RNN)的特殊变体。

JJJAY 9万+

FreeSurfer预处理命令

比如将/source/kernel.tgz解压到 /source/linux-2.6.29 目录 tar zxvf /source/kernel.tgz -C /source/ linux-2.6.29 tar zxvf /home/tj/application/freesurfer/subjects/mindboggle/OASIS-TRT-20-1.tar.gz -C /home/tj/application/freesurfer/subjects (1)lh.thickness mri_surf2su

Dream19961996的博客 1506

简单却好用:使用Keras 2实现基于LSTM的多维时间序列预测

朋友们好,时隔很久我又开始写时间序列相关的博客啦。 本次博客的主题是: 提供一种适用于初中级学者的时间序列预测模型 并且十分的有效好用 数据介绍 该数据集是一个污染数据集,我们需要用该多维时间序列去预测pollution这个维度,采用80%作为训练集,20%作为测试集。 模型实现 模型使用双层LSTM加一个全连接层实现预测 具体结构如下 def trainModel(trainX,trainY,config): ''' trainX,trainY: 训练LSTM模型所需要的数据 p

小EZ的博客 7327

面向干净核心的并行扩展:SAP BTP 上的 side-by-side extensions 全面解读

摘要: SAP的side-by-side extensions是一种与核心系统解耦的云原生扩展模式,通过API和事件驱动实现与SAP S/4HANA等核心系统的松耦合集成。该模式支持独立升级、弹性扩展和高效创新,是SAP官方推荐的clean core关键实现路径。其典型架构包括接口层(OData/REST API、事件通道)、运行层(Cloud Foundry/Kyma/CAP框架)和体验层(Fiori/UI5)。适用场景包括需快速迭代、复用云服务或服务外部用户的业务扩展。实施时需关注安全治理(如XSUAA

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 304

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

深度学习之LSTM时间序列预测

LSTM(long short-term memory,LSTM):长短时记忆网络,是循环神经网络(recurrent neural network,RNN)的一个重要结构,循环神经的主要用途是处理和预测序列数据。全连接神经网络(感知机,BP神经网络,RBF 神经网络等)或卷积神经网络模型中,网络结构都是从输入层到隐含层再到输出层,层与层之间是全连接或部分连接,每层节点之间是无连接的。然而循环神经...

Melo琦 2万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: 基于Keras用LSTM进行时间序列预测(一)
下一篇: C++中functional包中function的使用
Poo_Chai
博客等级 码龄9年 178粉丝 117原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值