Tensorflow2基础代码实战系列之时间序列预测任务

news2024/11/24 16:58:47

深度学习框架Tensorflow2系列

注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flink Kafka Hbase Hive Flume等等~写的都是纯干货,各种顶会的论文解读,一起进步。
这个系列主要和大家分享深度学习框架Tensorflow2的各种api,从基础开始。
#博学谷IT学习技术支持#


文章目录

  • 深度学习框架Tensorflow2系列
  • 前言
  • 一、时间序列预测任务实战
  • 二、数据集介绍
  • 三、实战代码
    • 1.单特征构建序列数据
    • 2.构建LSTM模型进行预测
    • 3.用训练好的模型预测结果
  • 总结


前言

通过时间序列预测任务实战案例,学习Tensorflow2中一些API


一、时间序列预测任务实战

数据集:气温数据,多种指标
任务目标:预测未来某一时间点的气温/未来某一时间片段的气温

二、数据集介绍

import warnings
warnings.filterwarnings("ignore")
# from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import os
import pandas as pd
mpl.rcParams['figure.figsize'] = (8, 6)
mpl.rcParams['axes.grid'] = False

df = pd.read_csv('jena_climate_2009_2016.csv')
df.head()

在这里插入图片描述

三、实战代码

1.单特征构建序列数据

def univariate_data(dataset, start_index, end_index, history_size, target_size):
    data = []
    labels = []

    start_index = start_index + history_size
    if end_index is None:
        end_index = len(dataset) - target_size

    for i in range(start_index, end_index):
        indices = range(i-history_size, i)
        # Reshape data from (history_size,) to (history_size, 1)
        data.append(np.reshape(dataset[indices], (history_size, 1)))
        labels.append(dataset[i+target_size])
    return np.array(data), np.array(labels)
TRAIN_SPLIT = 300000
tf.random.set_seed(13)
# 只选一个温度特征
uni_data = df['T (degC)']
uni_data.index = df['Date Time']
uni_data = uni_data.values
# 数据标准化
uni_train_mean = uni_data[:TRAIN_SPLIT].mean()
uni_train_std = uni_data[:TRAIN_SPLIT].std()
uni_data = (uni_data-uni_train_mean)/uni_train_std
univariate_past_history = 20
univariate_future_target = 0

x_train_uni, y_train_uni = univariate_data(uni_data, 0, TRAIN_SPLIT,
                                           univariate_past_history,
                                           univariate_future_target)
x_val_uni, y_val_uni = univariate_data(uni_data, TRAIN_SPLIT, None,
                                       univariate_past_history,
                                       univariate_future_target)
print ('Single window of past history')
print (x_train_uni[0])
print ('\n Target temperature to predict')
print (y_train_uni[0])

只用’T (degC)'的前20个数据,预测第21的值。
在这里插入图片描述
把数据画图展示一下

def create_time_steps(length):
    time_steps = []
    for i in range(-length, 0, 1):
        time_steps.append(i)
    return time_steps

def show_plot(plot_data, delta, title):
    labels = ['History', 'True Future', 'Model Prediction']
    marker = ['.-', 'rx', 'go']
    time_steps = create_time_steps(plot_data[0].shape[0])
    if delta:
        future = delta
    else:
        future = 0

    plt.title(title)
    for i, x in enumerate(plot_data):
        if i:
            plt.plot(future, plot_data[i], marker[i], markersize=10,label=labels[i])
        else:
            plt.plot(time_steps, plot_data[i].flatten(), marker[i], label=labels[i])
    plt.legend()
    plt.xlim([time_steps[0], (future+5)*2])
    plt.xlabel('Time-Step')
    return plt
show_plot([x_train_uni[0], y_train_uni[0]], 0, 'Sample Example')

在这里插入图片描述

2.构建LSTM模型进行预测

BATCH_SIZE = 256
BUFFER_SIZE = 10000

train_univariate = tf.data.Dataset.from_tensor_slices((x_train_uni, y_train_uni))
train_univariate = train_univariate.cache().shuffle(BUFFER_SIZE).batch(BATCH_SIZE)

val_univariate = tf.data.Dataset.from_tensor_slices((x_val_uni, y_val_uni))
val_univariate = val_univariate.batch(BATCH_SIZE)

simple_lstm_model = tf.keras.models.Sequential([
    tf.keras.layers.LSTM(8, input_shape=x_train_uni.shape[-2:]),
    tf.keras.layers.Dense(1)
])

simple_lstm_model.compile(optimizer='adam', loss='mae')
EPOCHS = 10
simple_lstm_model.fit(train_univariate, epochs=EPOCHS,
                      validation_data=val_univariate, validation_steps=50)

3.用训练好的模型预测结果

for x, y in val_univariate.take(1):
    plot = show_plot([x[0].numpy(), y[0].numpy(),
                    simple_lstm_model.predict(x)[0]], 0, 'Simple LSTM model')
    plot.show()

在这里插入图片描述


总结

通过时间序列预测任务实战案例,学习Tensorflow2中一些API

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/571632.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实时时钟 RTC

概述 实时时钟(RTC) 模块可长时间维持精确计时,为系统提供实时时钟和日历。该模块功耗极低,最大程度延长电池寿命。 RTC的主要特点: ⚫ BCD 时间 格式 ,完整万年历 ⚫ 支持数字调校, 最高 精度可达 0. 06 ppm ⚫ 可输出…

作为996社畜,如何自学Python?一文讲清楚

作为996社畜,应该如何自学Python?今天就给大家分享一下,工作之余,应该如何学习Python? 1. 明确目标 对于零基础的学员而言,要明确你学习Python仅仅是为了满足好奇心?还是有工作需要&#xff0c…

如何使用ArcGIS制作气温空间分布图

本文使用ArcMap10.2,以湖北省为例,通过空间插值,制作湖北省1981-2010年20年平均气温空间分布图 树谷资料库资源大全 1 数据准备 可在中国气象数据网下载湖北省1981-2010共20年的各区站累年平均气温数据和各区站经纬度数据。打开为txt格式 在…

【三】设计模式~~~创建型模式~~~抽象工厂模式(Java)

【学习难度:★★★★☆,使用频率:★★★★★】 3.1. 模式动机 在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中…

【计算机网络】网络基础(一)

首先声明:这是开发中用到的网络的知识点,侧重点在于编程实践,不重视概念。网络基础不在于细节,在于构建宏观的结构。后面重点在于网络套接字编程!!!!! 目录 1.背景知识 …

经典文献阅读之--ERASOR(栅格占用过滤动态障碍物)

0. 简介 之前作者在《激光雷达动态障碍物滤除-调研与展望》以及《3D帧间匹配-----剔除动态障碍物》中提到了如何通过各种方法来完成动态障碍物的滤波。而本文也将围绕着如何完成动态障碍物滤波来展开,来介绍《ERASOR: Egocentric Ratio of Pseudo Occupancy-based …

CentOS系统如何开展爬虫工作

CentOS 系统可以用于进行爬虫工作。实际上,很多大型网站和在线服务都运行在 Linux 系统下,包括 CentOS、Ubuntu、Debian 等,因此 CentOS 系统也常用于进行爬虫工作。 在CentOS系统上开展爬虫工作,可以按照以下步骤进行&#xff1a…

CESSCN安全设计与集成一级-中国通信企业协会通信网络安全服务能力评定证书

通信网络安全设计与集成服务能力评定是依据《通信网络安全防护管理办法》、《电信网与互联网第三方安全服务评定准则》YD/T2669-2013、以及《通信网络安全服务能力评定管理办法》的具体要求,对通信网络安全服务单位的技术能力、服务能力、质量保证能力、人员构成与素…

智能路由器开发之OpenWrt简介

智能路由器开发之OpenWrt简介 1. 引言 1.1 智能路由器的重要性和应用场景 智能路由器作为网络通信的核心设备,具有重要的地位和广泛的应用场景。传统的路由器主要提供基本的网络连接功能,但随着智能家居、物联网和大数据应用的快速发展,对于…

池州控股集团财务共享项目启动啦!

近日,由用友网络承建的池州市投资控股集团有限公司财务共享项目启动会成功举办,也标志着池州控股集团财务共享项目正式启动!池州控股集团总经理刘俊、用友国资事业部总经理汪发清及其他相关专家和项目组主要成员参加了此次启动会。 池州投控集…

100种思维模型之全局观思维模型-67

全局观思维模型,一个教我们由点到线,由线到面,再由面到体,不断的放大格局去思考问题的思维模型。 01、何谓全局观思维模型 一、全局观思维 什么叫全局观? 世界上的所有东西,都是被规律作用者的&#xff0c…

Linux网络基础-5

在上一篇博客中我们对网络层的典型协议--IP进行了介绍,那么本篇博客作为网络方面的最后一片博客,我们对网络中最后内容--链路层协议进行讲解。 目录 1.链路层协议 1.1MAC地址 1.1.1类型 1.1.2作用 1.2以太网协议 1.2.1协议格式 1.2.2ARP协议 1.…

现场直击 | 沈阳新技术交流会,实景三维再“出圈”

5月19日,由中国测绘学会、中国地理信息产业协会指导,辽宁省测绘地理信息学会、辽宁省土地学会地理信息专业委员会主办,武汉大势智慧科技有限公司、沈阳市勘察测绘研究院有限公司承办的“全自主、全流程、全覆盖”2023实景三维新技术交流会沈阳…

QT桌面项目(日历程序)

文章目录 前言一、QCalendarWidget介绍二、日历代码实现总结 前言 本篇文章继续为大家讲解QT桌面项目,那么这篇文章我们将实现一个日历程序。在QT中要想实现一个简单的日历程序是非常简单的,使用QT中自带的QCalendarWidget类即可实现。 一、QCalendarW…

LAMP的部署(天光渐暗,暮色里遗漏了一丝蓝,星辰便从中亮起。)

一、LAMP架构概述 LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词,具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、PHP&#…

阻抗板是否高可靠,华秋有话说

随着高频高速电子产品的快速发展,信号传输过程更容易出现反射、串扰等信号完整性问题,且频率越高、传输速率越快,信号损耗越严重,如何降低信号在传输过程中的损耗、保证信号完整性是高频高速PCB发展中的巨大挑战。 在高速PCB设计…

USB主机枚举设备

https://space.bilibili.com/489340606/channel/collectiondetail?sid896957 以下图片来自于沁恒微电子蔡亮工程师的讲课,对USB开发入门很有好处。 1. USB设备的组成结构 一个设备可以有多个配置,但同一时刻只能有一个生效。一个配置可以有多个接口&a…

Linux——进程概念详解

目录 一.什么是进程? 2.PCB的含义,为什么会存在PCB? 整体解析操作系统对进程的管理方式: 二.对比Windows系统: 三.Linux——进程 学习一个新指令:ps ajx 四.接下来学习几个进程的系统调用函数&#xff1…

版图设计IC617 virtuoso工具使用,创建一个库

库是用于创建自己的芯片的,一个库可以看成一个芯片,一个芯片又包含各种元器件。cell就是用于定义具体的元器件的。元器件包含版图,原理图,逻辑符号,等各种视图。 一 创建库过程 1.1 库的创建 1. 在Library Manager下…

PaLM 2重磅来袭,深挖谷歌92页技术报告亮点总结

谷歌CEO桑达尔・皮查伊(Sundar Pichai)亲切地将2023年称为是一个AI busy year,当地时间5月10日,谷歌IO大会上,谷歌大语言模型PaLM 2虽迟但到。作为一个“AI-first”公司,谷歌在Bard聊天机器人爆出事实性错误…