MinMaxScaler 如何影响我的测试数据?

How does MinMaxScaler affect my test data?

假设我想预测股票价格并且我有我的训练数据,我知道其中的最小值和最大值。这似乎是使用 MinMaxScaler 的好案例,但我想知道的是以下内容。如果我从我的训练数据中知道最高值设置为 1,那么当我的测试数据中的股票价格达到比我首先归一化为 1 的值更高的值时会发生什么?它只是覆盖它并将其指定为新的最大值吗?

sklearn 中的缩放器具有三种值得注意的方法,您应该在 运行使用这些类型的程序时使用它们:

  • scaler.fit(x) - 这会将缩放器的最小值和最大值(使用 MinMaxScaler 时)设置为在 x
  • 中找到的值
  • y_transformed = scaler.transform(y) - 这将使用在上面的 fit 命令中找到的参数转换数据 y
  • x_transformed = scaler.fit_transform(x) 这将同时 运行 以上两个命令。这应该只应用于您的训练数据。

因此,从本质上讲,当您训练模型时,您将训练严格在 0-1 范围内的数据,因为您的缩放器将根据该数据进行拟合。当您获得新数据或 test/validation 集中的数据可能超出范围(使用 scaler.transform(y))时,这将只是 return 0-1 范围之外的数据(即. 1.1 或 -0.4 的值)。

如果这是您使用的算法的问题,我建议无论如何将数据剪裁为 0-1,或者在训练前增加缩放器的参数(在预期中)。