使用 MinMaxScaler 转换测试集时会发生什么

What happens when you transform the test set using MinMaxScaler

我目前正在预处理我的数据,我知道我必须在我的训练集和测试集上使用相同的缩放参数。但是,当我应用 sklearn 库中的 transform 方法时,我发现了一些奇怪的东西。

我首先在我的训练集上使用了 preprocessing.MinMaxScaler(feature_range=(0,1)),它将最大值设置为 1,最小值设置为 0。接下来,我在我的测试集上使用了 minmax_scaler.transform(data),我注意到当我打印出数据框,我的值大于 1。这可能意味着什么?

对于给定的特征 x,您的 minmax 缩放到 (0,1) 将有效映射:

x to (x- min_train_x)/(max_train_x - min_train_x)

其中 min_train_xmax_train_x 训练集 .

x 的最小值和最大值

如果 测试集 x 的值大于 max_train_x 缩放转换将 return 值 > 1.

这通常不是什么大问题,除非输入必须在 (0,1) 范围内。

实际上,当您希望数据在特定范围内时,会使用 MinMaxScalar。例如,如果您有

这样的数据

这是二维数组

[
[1000,2000],
[3000,4000],
[1,2],
[3,50]
]

现在在此数据中,我希望最小数量为 1,最大数量为 100 所以我必须将所有数据转换为范围 (1,100)

现在我的数据将变成

[
[ 33.97799266,50.47523762],
[100,100],
[1,1],
[1.06602201,2.1885943 ]
]

python

中的最小最大缩放器
from sklearn.preprocessing import MinMaxScaler
data = [[1000,2000],[3000,4000],[1,2],[3,50]]
scaler = MinMaxScaler(feature_range=(1, 100))
print(scaler.fit(data))
print(scaler.transform(data))