如何在标准化后对新数据使用保存的神经网络

问题描述

我已经使用 TensorFlow 和 Keras 构建并训练了一个神经网络,它非常适合我的数据。 在使用数据之前,我使用 sklearn 的 StandardScale() 对其进行了标准化。 我 fit_transform() 训练数据,仅 transform() 测试和验证数据。

最后,我保存了我的模型。

现在我想将模型用于新数据。 我想我也需要转换()这些数据,但我该怎么做?

我的数据使用来自训练数据集的 fit_transform() 函数的所有参数进行了转换。 如果我在我的新数据中使用 fit_transform(),我得到的结果会比使用验证和测试数据的相同方式转换它们更糟糕。

有没有办法存储 fit_transform() 函数中的信息,以便稍后在加载保存的模型时使用它?所以我会得到一个新的数据集,转换喜欢测试和验证数据?

解决方法

在进行预测时,您不应使用 fit_transform,因为这会覆盖您之前拟合的定标器。请注意,fit_transform 是两个方法 fit()transform() 的组合,如果您希望获得相同的效果,您可以单独运行它们。

因此,要在不改变它的情况下使用合适的缩放器,只需使用 transform()

要保存它,您可以随时使用pickle:

import pickle 

with open(os.path.join(<your_path>,'scaler.pkl'),'wb') as output:
     pickle.dump(<your_scaler>,output)