如何解决形状问题的inverse_transform?

时间:2019-08-24 06:55:54

标签: python machine-learning scikit-learn

这是我的代码

scaler = MinMaxScaler() #default set 0~1
dataset= scaler.fit_transform(dataset)
...
make model
...
predicted = model.predict(X_test) #shape : (5, 1)

当我运行predict = scaler.inverse_transform(predicted)

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

我的模型有2个功能作为输入

我在多个方向上尝试了scaler.inverse_transform(predict)[:, [0]]reshape

但发生相同的ValueError

我该如何解决这个问题?请给我一些建议

我需要您的宝贵意见,将不胜感激。

1 个答案:

答案 0 :(得分:0)

您以错误的方式使用inverse_transform:将fit_transform用于您的功能,而您将inverse_transform用于您的预测,它们的形状不同,因此会出现错误。

这不是inverse_transform的预期用法;进一步了解docs

  

inverse_transform (自己,X)

     

根据feature_range撤消X的缩放比例。

     

参数:X:类似数组的形状[n_samples,n_features]

     

将要转换的输入数据。不能稀疏。

从您的帖子中还不清楚为什么您试图“转换回”您的预测;仅当您已经转换了标签时才有意义(如果您这样做,则尚无法从您的帖子中得知),并且例如要在标签的原始比例中缩减MSE之类的度量。在这种情况下,您应该为标签使用单独的缩放器-有关详细信息,请参见How to interpret MSE in Keras Regressor中的答案(示例与StandardScaler相同,但原理相同)。