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

news/2024/3/28 18:24:39/文章来源:https://blog.csdn.net/weixin_53280379/article/details/130882235

深度学习框架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'] = Falsedf = 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_sizeif end_index is None:end_index = len(dataset) - target_sizefor 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 = 0x_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_stepsdef 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 = deltaelse:future = 0plt.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 = 10000train_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.luyixian.cn/news_show_306536.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenVINO 2022.3实战四:POT API 实现 YOLOv5 模型 INT8 量化

OpenVINO 2022.3实战四:POT API 实现 YOLOv5 模型 INT8 量化 将预训练的 YOLOv5m Pytorch 模型转换为 OpenVINO™ FP32 Intermediate Representation (IR) 模型。下一步,通过 OpenVINO™ Post-Training Optimization Tool (POT) API 来定义客制化DataLo…

【Linux】打开Linux大门,踏入Linux世界(环境搭建再加一群Linux基本指令就OK啦~)

🧑‍🎓个人主页:简 料 🏆所属专栏:Linux系统编程与网络编程 🏆个人社区:越努力越幸运社区 🏆简 介:简料简料,简单有料~在校大学生一枚&#x…

URLConnection(三)

文章目录 1. 配置连接2. protected URL url3. protected boolean connected4. protected boolean allowUserInteraction5. protected boolean doInput5. protected boolean doOutput6. protected boolean isModifiedSince7. protected boolean useCaches8. 超时 1. 配置连接 U…

【C++实现插入排序、希尔排序、冒泡排序、快速排序、选择排序】

使用C实现来插入排序、希尔排序、冒泡排序、快速排序、选择排序算法。 一、插入排序 插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好…

有哪些pdf转word的免费软件?这个办法值得一试

在日常工作和学习中,我们经常需要将PDF文件转换为Word文档。尤其是在需要编辑PDF文档中的内容时,将其转换为Word文档是非常必要的。但是,很多人不知道该如何快速完成这项任务。在本文中,我们将介绍一些简单的转换方式,…

服务器被勒索病毒攻击怎么办,如何进行勒索病毒解密与预防工作?

在当今社会中服务器已经成为企业关键数据存储和传输的重要载体,同样也成为黑客攻击和勒索病毒的首要目标。一旦服务器被勒索病毒攻击,企业的正常运转与经济利益和核心数据都将受到威胁。下面将为大家介绍一下服务器被勒索病毒攻击后应该采取怎样的措施及…

VanillaNet:深度学习极简主义的力量

摘要 基础模型的核心是“更多不同”的理念,计算机视觉和自然语言处理方面的出色表现就是例证。然而,Transformer模型的优化和固有复杂性的挑战要求范式向简单性转变。在本文中,我们介绍了VanillaNET,这是一种设计优雅的神经网络架…

vite-plugin-pwa配置详解

vite-plugin-pwa配置详解 前提:前端域名和后端服务域名相同时,用window.open新开页面下载或者导出文件,项目中导出和下载功能失效,原因是,域名相同走缓存 实现service worker离线缓存以前需要自己编写sw.js文件内容&…

npm更换成淘宝镜像源及cnpm使用

1.需求由来 由于node安装插件是从国外服务器下载,受网络影响大,速度慢且可能出现异常。所以如果npm的服务器在中国就好了,所以我们乐于分享的淘宝团队(阿里巴巴旗下业务阿里云)干了这事。来自官网:“这是一…

AnsiConsole-能够编写 ANSI 转义序列的控制台

Spectre.Console 是一款 .NET 库,提供了一种简单但强大的方式来创建美观和交互式的控制台应用程序。它允许开发人员轻松构建具有颜色、表格、进度条等功能的富命令行界面 (CLI)。 功能 Spectre.Console 的一些显着功能包括: 颜色:Spectre.C…

单片机GD32F303RCT6 (Macos环境)开发 (二十八)—— 蓝牙透传模块HC-08 Android App开发

蓝牙透传模块HC-08 Android App开发 1、App整体开发思路 a、首先要申请权限,采用动态申请的方式,用户点击确认后方可操作蓝牙。 b、搜索蓝牙,之前的版本用startLeScan函数搜索蓝牙,虽然高版本中依然可用,但是google已…

4.Ansible Inventory介绍及实战 - A list or group of lists nodes

什么是inventory? 官方解释:Ansible automates tasks on managed nodes or “hosts” in your infrastructure, using a list or group of lists known as inventory. Ansible可以同时与您基础设施中的一个或多个系统协同工作。为了与多台服务…

接口测试的请求和响应

接口测试的请求和响应 在软件开发中,接口测试是必不可少的一环节。接口测试主要涉及到测试请求和响应的过程。请求是指客户端向服务器发送的一些指令或数据,而响应则是服务器对这些请求做出的回应。 请求通常包括请求方法、请求头以及请求体。请求方法有…

【什么是iMessage苹果推?】什么是苹果推信?什么是苹果推?

挑选得当的IM推送平台:选择合用于PC真个IM推送平台 开辟或集成API:依照所选平台的开发文档,利用响应的编程语言(如Python、Java等)开发或集成API,以便与平台举行交互和节制。API可用于建立、办理和发送消息…

【HarmonyOS】【FAQ】HarmonyOS应用开发相关问题解答(二)

【写在前面】 之前和大家分享过一下HarmonyOS应用开发相关问题,今天继续和大家分享! 【前提简介】 本文档主要总结HarmonyOS开发过程中可能遇到的一些问题解答,主要围绕HarmonyOS展开,包括但不限于不同API版本HarmonyOS开发、UI…

单体项目偶遇并发漏洞!短短一夜时间竟让老板蒸发197.83元

事先声明:以下故事基于真实事件而改编,如有雷同,纯属巧合~ 眼下这位正襟危坐的男子,名为小竹,他正是本次事件的主人公,也即将成为熊猫集团的被告,嗯?这究竟怎么一回事?欲…

Linux网络编程—Day10

Linux服务器程序规范 Linux服务器程序一般以后台进程形式运行。后台进程又称守护进程。它没有控制终端,因而也不会意外接收到用户输入。 守护进程的父进程通常是init进程(PID为1的进程);Linux服务器程序通常有一套日志系统&#…

设备快线客户端软件V1.0用户手册

1.前言欢迎使用设备快线客户端软件产品。设备快线客户端软件简称DYClient,DYClient客户端是东用科技有限公司推出的一款用于远程维护的控制软件,主要为客户远程访问现场终端设备提供便捷的接入服务,并且通过DYClient客户端软件用户可以非常方便快捷的访问…

基于RetinaNet和TensorFlow Object Detection API实现目标检测(附源码)

文章目录 一、RetinaNet原理二、RetinaNet实现1. tf.train.CheckPoint简介2. RetinaNet的TensorFlow源码 一、RetinaNet原理 待补充 二、RetinaNet实现 1. tf.train.CheckPoint简介 待补充 2. RetinaNet的TensorFlow源码 Step 1:安装Tensorflow 2 Object Detect…

云原生之深入解析Docker容器退出码的含义和产生原因

一、前言 为什么我的容器没有运行?回答这个问题之前,需要知道 Docker 容器为什么退出?退出码会提示容器停止运行的情况?本文列出最常见的退出码,来回答两个重要问题:这些退出码是什么意思?导致该退出码的动作是什么?exit code:代表一个进程的返回码,通过系统调用 exi…