【问题标题】:Keras: Does model.predict() require normalized data if I train the model with normalized data?Keras:如果我用标准化数据训练模型,model.predict() 是否需要标准化数据?
【发布时间】:2021-09-08 03:43:33
【问题描述】:
在使用 Keras 完成模型训练后,我尝试使用 Keras 的 model.predict() 来测试新输入的模型。
当我训练模型时,我使用 Scikit Learn 的 MinMaxScaler() 对训练数据进行了标准化。
在使用model.predict() 时,我是否也需要对数据进行规范化?如果是这样,我该怎么做?
【问题讨论】:
标签:
python
tensorflow
machine-learning
keras
scikit-learn
【解决方案1】:
是的。你需要。因为您的模型已从具有特定规模的数据中学到的。因此,最好将数据转换为与模型工作相同的规模,然后让它进行预测。
例如,您可以使用Scikitlearn库正常化和标准数据:
x_scaler = StandardScaler()
x_train = x_scaler.fit_transform(x_train)
x_test = x_scaler.transform(x_test)
y_scaler = StandardScaler()
y_train = y_scaler.fit_transform(y_train)
y_test = y_scaler.transform(y_test)
然后,对于预测,您应该对训练数据集使用相同的归一化参数,然后反向缩放以返回之前缩放的预测值,如下所示:
preds = y_scaler.inverse_transform(
model.predict(x_scaler.transform(pred_input))
)