【发布时间】:2021-03-17 22:41:06
【问题描述】:
当我使用 sklearn MinMaxScaler() 时,我注意到一些有趣的行为,如以下代码所示。
>>> from sklearn.preprocessing import MinMaxScaler
>>> data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
>>> scaler = MinMaxScaler(feature_range=(0, 1))
>>> scaler.fit(data)
MinMaxScaler(copy=True, feature_range=(0, 1))
>>> test_data = [[-22, 20], [20.5, 26], [30, 40], [19, 13]]
>>> scaler.transform(test_data)
array([[-10.5 , 1.125 ],
[ 10.75 , 1.5 ],
[ 15.5 , 2.375 ],
[ 10. , 0.6875]])
我注意到,当我使用合适的 MinMaxScaler() 转换 test_data 时,它返回的值超出了定义的范围 (0 - 1)。
现在,我故意让 test_data 超出“数据”的取值范围,以测试 MinMaxScaler() 的输出。
我认为当“test_data”的值超出变量“data”的值范围时,它应该返回一些错误。但是,情况并非如此,我得到了一个超出定义范围的输出值。
我的问题是,为什么函数会表现出这种行为(即,当 test_data 值超出正在拟合 MinMaxScaler 的数据中的值范围时,返回超出定义范围的输出值),而不是返回错误?
【问题讨论】:
-
你知道
fit和transform是什么意思吗? -
@ombk:是的,我当然知道两者的区别
标签: python machine-learning scikit-learn