单变量时间序列预测
import tensorflow as tf
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import os
import pandas as pd
mpl.rcParams['figure.figsize'] = (8, 6)
mpl.rcParams['axes.grid'] = False
注:
1、mpl.rcParams[’’] 统一设置画布大小和不显示网格线。
加载数据集
zip_path = tf.keras.utils.get_file(
origin='https://storage.googleapis.com/tensorflow/tf-keras-datasets/jena_climate_2009_2016.csv.zip',
fname='jena_climate_2009_2016.csv.zip',
extract=True)
csv_path, _ = os.path.splitext(zip_path)
df = pd.read_csv(csv_path)
df.head()
###
# Date Time p (mbar) T (degC) Tpot (K) Tdew (degC) rh (%) VPmax (mbar) VPact (mbar) VPdef (mbar) sh (g/kg) H2OC (mmol/mol) rho (g/m**3) wv (m/s) max. wv (m/s) wd (deg)
#0 00:10:00 996.52 -8.02 265.40 -8.90 93.3 3.33 3.11 0.22 1.94 3.12 1307.75 1.03 1.75 152.3
#1 00:20:00 996.57 -8.41 265.01 -9.28 93.4 3.23 3.02 0.21 1.89 3.03 1309.80 0.72 1.50 136.1
#2 00:30:00 996.53 -8.51 264.91 -9.31 93.9 3.21 3.01 0.20 1.88 3.02 1310.24 0.19 0.63 171.6
#3 00:40:00 996.51 -8.31 265.12 -9.07 94.2 3.26 3.07 0.19 1.92 3.08 1309.19 0.34 0.50 198.0
#4 00:50:00 996.51 -8.27 265.15 -9.04 94.1 3.27 3.08 0.19 1.92 3.09 1309.00 0.32 0.63 214.3
###
注:
1、本教程使用[由马克斯·普朗克生物地球化学研究所记录的天气时间序列数据集。
该数据集包含14个不同的特征,例如气温,大气压力和湿度。从2003年开始,每10分钟收集一次。为了提高效率,您将仅使用2009年至2016年之间收集的数据。数据集的这一部分由FrançoisChollet为他的《Python深度学习》一书准备。
2、os.path.splitext() 用于分离文件名和扩展名,返回(‘filename’, ‘.zip’)。
如上所示,每10分钟记录一次观察。这意味着在一个小时内,您将有6个观测值。同样,一天将包含144(6x24)次观察。
给定一个特定的时间,假设您要预测未来6小时的温度。为了做出此预测,您选择使用5天的观察时间。因此,您将创建一个包含最后720(5x144)个观测值的窗口以训练模型。许多这样的配置都是可能的,这使该数据集成为一个很好的实验对象。
下面的函数返回上述时间窗以供模型训练。该参数history_size是过去信息窗口的大小。这target_size是模型需要学习预测的未来时间。该target_size是需要被预测的标签。
def univariate_data(dataset, start_index, end_index, history_size, target_size):
data =