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

时间:2019-06-19 10:20:47

标签: python scikit-learn sklearn-pandas

我目前正在预处理我的数据,并且我了解我必须使用与我的训练集和测试集相同的缩放参数。但是,当我从transform库中应用sklearn方法时,我发现有些奇怪。

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

2 个答案:

答案 0 :(得分:0)

对于给定的功能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,则缩放转换将返回值> 1

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

答案 1 :(得分:0)

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

的数据

这是2d数组

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

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

现在我的数据将变为

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

MinMax Scaler in 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))