谁能解释sklearn preprocessing.normalise和MinMaxScaler()之间的区别

时间:2018-12-12 05:26:51

标签: python-3.x scikit-learn

我一直在关注sklearn文档,并且能够弄清 MinMaxScaler(), 但是 sklearn.preprocessing.normalise 是什么?谁能用一个简单的例子向我解释。谢谢。

1 个答案:

答案 0 :(得分:0)

  • 规范化器将处理每一行以将其重新缩放为单位圆,例如:

    平方数据的总和等于1。

所以

X = [4, 1, 2, 2]

transformer = Normalizer().fit(X)

# Returns
Normalizer(copy=True, norm='l2')

# Then when you transform you 
transformer.transform(X)
# Returns
array([0.8, 0.2, 0.4, 0.4])

要验证我的意思,您可以验证平方和等于1:

0.8 ^ 2 + 0.2 ^ 2 + 0.4 ^ 2 + 0.4 ^ 2 = 1

  • MinMaxScaler使用列的max和min来按以下公式在0到1之间缩放数据:

    X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))

    X_scaled = X_std * (max - min) + min

where min, max = feature_range

以相同的示例:

# feature_range = 0, 1 if you want to scale it between 0 and 1

X_std = [1, 0, 0.333, 0.333]
X_scaled = X_std * (1 - 0) + 0
# So X_scaled = X_std for this range

因此您的MinMaxScaled为X_scaled = [1, 0, 0.333, 0.333]

再举一个例子,您可以检查数学:

data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
scaler = MinMaxScaler()
print(scaler.fit(data))
# 
MinMaxScaler(copy=True, feature_range=(0, 1))
print(scaler.data_max_)
[ 1. 18.]
print(scaler.transform(data))
[[0.   0.  ]
 [0.25 0.25]
 [0.5  0.5 ]
 [1.   1.  ]]