更改
a = dataset[i:(i + look_back), 0]
至
a = dataset[i:(i + look_back), :]
如果您想要训练数据中的3个功能。
然后使用
model.add(LSTM(4, input_shape=(look_back,3)))
要指定您有look_back
顺序排列的look_back
时间步骤,每个步骤都有3个功能。
它应该运行
编辑:
确实, sklearn.preprocessing.MinMaxScaler()
的函数: inverse_transform()
接受的输入与您安装的对象具有相同的形状。因此,您需要执行以下操作:
# Get something which has as many features as dataset
trainPredict_extended = np.zeros((len(trainPredict),3))
# Put the predictions there
trainPredict_extended[:,2] = trainPredict
# Inverse transform it and select the 3rd column.
trainPredict = scaler.inverse_transform(trainPredict_extended)[:,2]
我想您的代码中还会有其他类似的问题,但是您无法解决的所有问题都没有解决:) ML部分已修复,您知道错误的出处。只需检查对象的形状,然后尝试使其匹配即可。
0
我正在尝试预测人口的用水量。
我有1个主要输入:
和2个辅助输入:
从理论上讲,它们与供水有关。
必须说每个降雨和温度数据都与水量相对应。因此,这是一个时间序列问题。
问题是,我不知道如何仅使用一个.csv文件中的3个输入,其中包含3列,每个输入对应一个,如下面的代码所示。当我只有一个输入(例如水量)时,使用此代码,网络或多或少会工作良好,但是当我输入多个代码时,网络则不会。 (因此,如果您使用下面的csv文件运行此代码,它将显示尺寸错误)。
阅读以下答案:
似乎很多人都有同样的问题。
编码:
编辑:代码已更新
如果有帮助,这是我创建的csv文件。
datos.csv
更改代码后,我修复了所有错误,但是我不确定结果如何。这是预测图中的缩放:
这表明预测值和实际值存在“位移”。当实时序列中存在最大值时,预测中同时存在一个最小值,但似乎它与上一个时间步长相对应。