生活中常常会碰到各种各样的时间序列预测问题,如商场人流量的预测问题、商品价格的预测、股价的预测、等等。
这些问题都,已知过去时间内的数据,希望你从中“发现”规律,预测未来值,并且数据按照时间顺序展开。
本文讲解TensorFlow 处理这类问题的基本处理方法。
主要讲解:
(一) 我们对这类问题的数据的处理方法,以方便输入给后续的网络模型。
(二) DNN模型对此类问题的处理,达到入门的效果。
数据处理:
假设上图为某类时间序列问题的历史数据,我们希望“学习”这类数据的规律,预测未来的数据。
为了将数据输入网络,我们需要将数据处理为神经网络需要的 (特征,标签) 类型的数据。
对于时间序列问题,我们引入一个 数据窗口 的概念,如上图绿色框所示。
假设窗口的大小(超参数)为:20, 则表示我们将过去20天的数据作为“特征”数据, 如而将当前的数据作为**“标签”**数据。
遍历所以已知历史数据,我们就可以得到我们所需的数据集。
小栗子: 我们以[0,1,2,…,9]的列表(简单序列数据)为例子,使用以上处理方法获得我们所需的数据集
1:导入所需包,确保TensorFlow版本为2.0
!pip install tf-nightly-2.0-preview
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
print(tf.__version__)
2:生成简单的序列数据[0,1,…,9]
dataset = tf.data.Dataset.range(10)
for val in dataset:
print(val.numpy())
3:获得窗口数据,窗口大小为5(实际为4,最后一个为标签数据)
dataset = tf.data.Dataset.range(10)
dataset = dataset.window(5, shift=1)
for window_dataset in dataset:
for va