我目前正在预处理我的数据,并且我了解我必须使用与我的训练集和测试集相同的缩放参数。但是,当我从transform
库中应用sklearn
方法时,我发现有些奇怪。
我首先在训练集上使用preprocessing.MinMaxScaler(feature_range=(0,1))
,将最大值设置为1,将最小值设置为0。接下来,我在测试集上使用了minmax_scaler.transform(data)
,当我打印出来时我注意到了在数据帧中,我的值大于1。这可能意味着什么?
答案 0 :(得分:0)
对于给定的功能x
,您的minmax
缩放到(0,1)
会有效地映射:
x to (x- min_train_x)/(max_train_x - min_train_x)
其中min_train_x
和max_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))