【发布时间】:2019-06-04 13:10:20
【问题描述】:
我正在尝试以下代码,发现sklearn 中的StandardScaler(or MinMaxScaler) 和Normalizer 处理数据的方式非常不同。这个问题使管道建设更加困难。我想知道这种设计差异是否是故意的。
from sklearn.preprocessing import StandardScaler, Normalizer, MinMaxScaler
对于Normalizer,数据被“水平”读取。
Normalizer(norm = 'max').fit_transform([[ 1., 1., 2., 10],
[ 2., 0., 0., 100],
[ 0., -1., -1., 1000]])
#array([[ 0.1 , 0.1 , 0.2 , 1. ],
# [ 0.02 , 0. , 0. , 1. ],
# [ 0. , -0.001, -0.001, 1. ]])
对于StandardScaler 和MinMaxScaler,数据是“垂直”读取的。
StandardScaler().fit_transform([[ 1., 1., 2., 10],
[ 2., 0., 0., 100],
[ 0., -1., -1., 1000]])
#array([[ 0. , 1.22474487, 1.33630621, -0.80538727],
# [ 1.22474487, 0. , -0.26726124, -0.60404045],
# [-1.22474487, -1.22474487, -1.06904497, 1.40942772]])
MinMaxScaler().fit_transform([[ 1., 1., 2., 10],
[ 2., 0., 0., 100],
[ 0., -1., -1., 1000]])
#array([[0.5 , 1. , 1. , 0. ],
# [1. , 0.5 , 0.33333333, 0.09090909],
# [0. , 0. , 0. , 1. ]])
【问题讨论】:
标签: python-3.x scikit-learn normalization scaling