使用 TensorFlow RNN 模型预处理数据集

为了使其为学习模型做好准备,通过应用 MinMax 缩放来正则化数据集,该缩放使数据集值介于 0 和 1 之间。您可以尝试根据数据的性质对数据应用不同的缩放方法。

# normalize the dataset
scaler = skpp.MinMaxScaler(feature_range=(0, 1))
normalized_dataset = scaler.fit_transform(dataset)

我们使用自己开发的实用函数将数据集拆分为训练和测试数据集。必须拆分数据而不对数据集进行混洗,因为改组数据集会破坏序列。维护数据序列对于训练时间序列模型非常重要。

train,test=tsu.train_test_split(normalized_dataset,train_size=0.67)

然后我们将训练和测试数据集转换为有监督的机器学习集。让我们试着理解监督学习集的含义。假设我们有一系列数据:1,2,3,4,5。我们想要了解生成数据集的概率分布。为了做到这一点,我们可以假设时间步长t的值是从时间步长t-1tk的值的结果,其中k是窗口大小。为简化起见,假设窗口大小为 1.因此,时间步长t的值(称为输入特征)是时间步长值t-1的结果,被称为目标。让我们重复一遍所有时间步骤,我们得到下表:

输入值或特征 输出值或目标
1 2
2 3
3 4
4 5

我们展示的示例只有一个变量值,它将转换为特征和目标。当目标值取决于一个变量时,它被称为单变量时间序列。同样的逻辑可以应用于多变量时间序列,其中目标取决于多个变量。我们使用x来表示输入特征,使用y来表示输出目标。

考虑到这一背景,为了将airpass数据转换为监督机器学习数据,我们设置了以下超参数:

  1. 设置用于学习或预测下一个时间步的过去时间步数:
n_x=1
  1. 设置学习或预测的未来时间步长的数量:
n_y=1
  1. 设置用于学习的x变量的数量;由于当前示例是单变量的,因此设置为 1:
n_x_vars = 1
  1. 设置要预测的y变量的数量;由于当前示例是单变量的,因此设置为 1:
n_y_vars = 1
  1. 最后,我们通过应用本节开头所述的逻辑将训练和测试数据集转换为XY集:
X_train, Y_train, X_test, Y_test = tsu.mvts_to_xy(train,
                                  test,n_x=n_x,n_y=n_y)

现在数据已经过预处理并可以输入到我们的模型中,让我们使用 TensorFlow 准备一个 SimpleRNN 模型。

results matching ""

    No results matching ""