我在Python中使用Tensorflow。我做了成功的预测,现在我有预测反转的问题。也就是说,我使用了来自Sklearn的MinMaxScaler,并使用以下代码行规范化数据:
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler(feature_range = (0,1))
dataset = scaler.fit_transform(df)
模型拟合成功后,我想对数据
进行反演# make predictions
trainPredict = model.predict(trainX)
testPredict = model.predict(testX)
# Shape of data
trainPredict.shape
(390, 7, 1)
testPredict.shape
(56, 7, 1)
# invert predictions
trainPredict = scaler.inverse_transform(testPredict)
trainY= scaler.inverse_transform([trainY])
testPredict_ = scaler.inverse_transform(testPredict)
testY = scaler.inverse_transform([testY])
执行完最后一块代码后,我收到了这个消息:
ValueError: Found array with dim 3. Estimator expected <= 2.
有谁能帮我解决这个问题和修复最后一块代码吗?
MinMaxScaler
使用2d数据,其中行对应样本,列为特征。它们根据每个特征的统计数据进行缩放:min, max。你的模型在预测3d数组时输出形状为[-1]=1,所以你可以使用np.squeeze
来解决这个问题。
另外,我看不出有任何理由对模型的输出进行反向转换。如果您需要将训练数据还原为原始的未缩放形式,那么对其进行逆变换可能会很有用。那么它应该是:
trainX_inv = scaler.inverse_transform(trainX)
testX_inv = scaler.inverse_transform(testX)