🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 使用 TensorFlow RNN 模型预处理数据集 为了使其为学习模型做好准备,通过应用 MinMax 缩放来正则化数据集,该缩放使数据集值介于 0 和 1 之间。您可以尝试根据数据的性质对数据应用不同的缩放方法。 ```py # normalize the dataset scaler = skpp.MinMaxScaler(feature_range=(0, 1)) normalized_dataset = scaler.fit_transform(dataset) ``` 我们使用自己开发的实用函数将数据集拆分为训练和测试数据集。必须拆分数据而不对数据集进行混洗,因为改组数据集会破坏序列。维护数据序列对于训练时间序列模型非常重要。 ```py train,test=tsu.train_test_split(normalized_dataset,train_size=0.67) ``` 然后我们将训练和测试数据集转换为有监督的机器学习集。让我们试着理解监督学习集的含义。假设我们有一系列数据:1,2,3,4,5。我们想要了解生成数据集的概率分布。为了做到这一点,我们可以假设时间步长`t`的值是从时间步长`t-1`到`tk`的值的结果,其中`k`是窗口大小。为简化起见,假设窗口大小为 1.因此,时间步长`t`的值(称为输入特征)是时间步长值`t-1`的结果,被称为目标。让我们重复一遍所有时间步骤,我们得到下表: | 输入值或特征 | 输出值或目标 | | --- | --- | | 1 | 2 | | 2 | 3 | | 3 | 4 | | 4 | 5 | 我们展示的示例只有一个变量值,它将转换为特征和目标。当目标值取决于一个变量时,它被称为单变量时间序列。同样的逻辑可以应用于多变量时间序列,其中目标取决于多个变量。我们使用`x`来表示输入特征,使用`y`来表示输出目标。 考虑到这一背景,为了将`airpass`数据转换为监督机器学习数据,我们设置了以下超参数: 1. 设置用于学习或预测下一个时间步的过去时间步数: ```py n_x=1 ``` 1. 设置学习或预测的未来时间步长的数量: ```py n_y=1 ``` 1. 设置用于学习的`x`变量的数量;由于当前示例是单变量的,因此设置为 1: ```py n_x_vars = 1 ``` 1. 设置要预测的`y`变量的数量;由于当前示例是单变量的,因此设置为 1: ```py n_y_vars = 1 ``` 1. 最后,我们通过应用本节开头所述的逻辑将训练和测试数据集转换为`X`和`Y`集: ```py X_train, Y_train, X_test, Y_test = tsu.mvts_to_xy(train, test,n_x=n_x,n_y=n_y) ``` 现在数据已经过预处理并可以输入到我们的模型中,让我们使用 TensorFlow 准备一个 SimpleRNN 模型。