[博学谷学习记录] 超强总结,用心分享|Tensorflow2基础代码实战系列之时间序列预测任务

深度学习框架Tensorflow2系列

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



前言

通过时间序列预测任务实战案例,学习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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 博学谷源码是一个基于Android平台的实战项目,它通过将理论知识与实际运用相结合,帮助学员更好地理解和掌握Android开发技术。 该源码提供了多个实际案例项目,涵盖了Android开发中常见的技术点和功能实现。通过参与这些实战项目,学员可以系统地学习并应用Android开发的基础知识和核心技术,提升实际开发能力。 博学谷源码的特点是完整、实用、项目化。每个项目都是从需求分析、架构设计、开发实现到最终功能测试和发布部署的完整过程。在实践中,学员能够学习到项目开发流程、团队协作、问题解决等实际开发技巧。同时,项目中也涵盖了常见的开发框架、库以及常用工具的使用,帮助学员快速上手开发。 此外,博学谷源码还提供了详细的文档和教学视频,通过这些学习资料,学员可以深入了解项目的功能设计和实现思路,快速掌握项目开发的方法和技巧。同时,学员也可以通过在源码的基础上进行二次开发,加深对Android开发的理解。 总之,博学谷源码是一个非常实用和全面的Android实战项目资源,通过参与其中,学员可以真实地接触到项目开发的方方面面,提高自身的开发能力和经验。 ### 回答2: Android项目实战博学谷源码是一个包含Android项目实战案例的代码库,可供开发者学习和参考。该源码库提供了各种实际的Android项目示例,其中包括了常见的功能、界面设计和技术实现等。 这些示例项目涵盖了不同的应用场景,例如通讯录管理、音乐播放器、天气预报、新闻阅读等。每个项目都提供了完整的源代码和相应的文档说明,开发者可以根据自己的需求选择适合自己的项目进行学习和练习。 通过学习这些项目的源码,开发者可以了解到实际项目中的开发思路、架构设计和代码实现。同时,还可以学习到一些常用的Android开发技术和工具,例如数据库操作、网络请求、图像处理等。 此外,该源码库还提供了一些高级主题的项目示例,例如自定义View、动画效果、性能优化等。这些示例项目对于想要更加深入学习和掌握Android开发的开发者来说非常有价值。 总之,Android项目实战博学谷源码是一个很好的学习资源,提供了实际的Android项目示例,帮助开发者提升自己的开发能力。无论是初学者还是有经验的开发者,都可以从中受益,并在以后的Android开发中运用到自己的项目中。 ### 回答3: 博学谷是一家在线教育平台,针对IT技术的学习提供了丰富的课程资源。其中,Android项目实战博学谷的一个重要分类,旨在帮助学员通过实际项目开发经验来提升Android开发的能力和实践技巧。 Android项目实战博学谷源码是指博学谷在Android项目实战课程中提供给学员的项目源代码。通过这些源码,学员可以了解到一个完整的Android项目是如何构建、实现各种功能、优化性能等方面的。同时,学员可以根据源码进行实际的编程练习,加深理解和掌握Android开发技能。 博学谷的Android项目实战课程覆盖了从基础入门到高级进阶的多个层次,内容涵盖了Android项目的各个方面,如UI设计、数据存储、网络通信、多媒体处理、性能优化等。学员可以根据自己的实际需求和兴趣选择合适的课程进行学习。 通过学习和实践这些源码,学员可以从项目实践中积累经验,深入理解Android开发的各个方面,并能够运用所学知识进行实际项目的开发工作。同时,博学谷也提供了丰富的学习资料和辅导服务,帮助学员顺利完成Android项目实战学习。 总之,博学谷的Android项目实战博学谷源码是一份具有实践价值的资料,通过学习和掌握这些源码,可以提高Android开发的能力,为今后的工作和学习打下坚实的基础
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值