最近用lstm跑一个多特征多步的时序预测任务
用了别人的源码进行改动
过程中发现预测值和真实值总是不在一个数量级上
如真实值是在0~10这个范围内,而预测值却在0~800左右,第一反应是目标列选错,检查了很久代码才发现,主要问题在两个方面
(1)在进行构造时间滞后的dataframe时,将目标列选错了(源码的目标列是var1,改成我的应该是var14)
(2)在将目标列逆归一化时,选择了其他列的scaler参数
scaler = data_prepare[0] #data_prepare[0]得到的是归一化后的数据集
#逆归一化
scale_new = MinMaxScaler()
scale_new.min_, scale_new.scale_ = scaler.min_[13], scaler.scale_[13]
#上面这一行,逆归一化时,min_和scale_这两个参数的个数就是变量的个数,应选择对应的变量的归一化参数
inv_y = scale_new.inverse_transform(test_y)
检查了很久才发现的问题,坑人