使用LSTM的多变量Keras预测模型:预测时使用哪个指标?



很抱歉,因为我是一个使用Keras和一般使用LSTM预测的新手。我正在编写的代码接受一个CSV文件,该文件的列是以某种方式相关的float或int值,使用Keras LSTM模型对这些列进行训练,并尝试预测其中一列作为输出。我遵循这个指南:

https://machinelearningmastery.com/multivariate-time-series-forecasting-lstms-keras/

在示例中,相关的预测列是空气污染量,所有其他值都用于预测该值。为我的CSV调整示例代码似乎很简单——我适当地更改了训练数据的大小和列的数量。

我的问题是,我不明白为什么示例代码是"输出预测值pollution"而不是其他的列。我可以只让我想要预测的列作为格式化输入CSV中的第二列,但是我希望尽可能多地理解示例中实际发生的情况。查看model .predict()的文档,它说如果模型有多个输入,则输入值可以是数组列表,但返回值仅描述为"预测的numpy数组",并且它没有指定如何使其返回"数组";相对于数组。当我打印出这个函数的结果时,我只得到一个关于污染变量的预测数组,所以看起来这一列在这一点之前的某个地方被选中了。

如何更改predict()返回的列?

更改predict()返回的列取决于您选择的输出数据(y)是什么。当作者对数据进行预处理时,他们将当前污染作为数据集的最后一列。然后,当选择输出y来评估模型时,他们运行以下代码行:

# split into input and outputs
train_X, train_y = train[:, :-1], train[:, -1]
test_X, test_y = test[:, :-1], test[:, -1]

输入数组(X)数组包含所有行和每一列除了最后一个,用他们的指数,而产量(y)数组只包含所有行但最后一列,即污染变量。

当模型在训练时,它试图使用输入,在这种情况下是之前的时间步输入,来准确地预测输出,在这种情况下是当前时间的污染。因此,使预测模型时,将使用这个函数,它学会了相关的两个数据集来预测污染。

因此,总的来说,选择您希望模型预测的列作为train_ytest_y数据集!希望这对你有帮助!

最新更新