【问题标题】:How to unscale data after predictions?如何在预测后取消缩放数据?
【发布时间】:2020-11-17 08:56:00
【问题描述】:

我有一个包含 2 个特征(价格和数量)和 1 个预测变量(价格)的数据集,并使用 LTSM 模型根据前一组价格预测下一个价格。

首先我缩放数据集:

#Scale the data
scaler = MinMaxScaler(feature_range=(0,1))
scaled_data = scaler.fit_transform(dataset)

最后我想取消缩放它:

#Get the models predicted price values
predictions = model.predict(x_test)
predictions = scaler.inverse_transform(predictions)

但这不起作用,我收到此错误:

ValueError: non-broadcastable output operand with shape (400,1) doesn't match the broadcast shape (400,2)

【问题讨论】:

    标签: python machine-learning scikit-learn


    【解决方案1】:

    此错误的含义是:您已缩放两个特征,即形状 (400,2) 的价格和体积,但是,在取消缩放时,您仅给出形状 (400,1) 的预测价格

    一个简单的解决方案是使用两个单独的缩放器 - 一个将取消缩放响应变量,即价格(以及相关的输入特征,再次是价格),第二个用于其余特征。

    【讨论】:

      【解决方案2】:

      你试过了吗:

      predictions = scaler.inverse_transform(predictions.reshape(-1,1)).reshape(-1)
      

      【讨论】:

        【解决方案3】:

        我决定将零列添加到预测数据集,取消缩放,然后删除未使用的列。愚蠢但对我有用)

        【讨论】:

        • 它“工作”的事实(即它不会产生任何 coding 错误)并不意味着它是正确的。请参阅有关您实际需要做什么的其他答案(您应该使用 feature 缩放器的反转来取消缩放 预测)。
        • 在 LSTM 时间序列预测的情况下,输出与输入在同一空间中。旧价格变成新价格。
        猜你喜欢
        • 2020-03-25
        • 2015-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-04
        • 2019-12-19
        • 2012-08-16
        • 2020-09-03
        相关资源
        最近更新 更多