有人可以在Scikit学习中解释MaxAbsScaler吗?

时间:2019-10-14 07:46:39

标签: python scikit-learn

我正在阅读MaxAbsScaler的文档。

https://scikit-learn.org/stable/modules/preprocessing.html#scaling-features-to-a-range

我不明白它到底是做什么的。

这里是一个例子:

>>> X_train = np.array([[ 1., -1.,  2.],
...                     [ 2.,  0.,  0.],
...                     [ 0.,  1., -1.]])
...
>>> max_abs_scaler = preprocessing.MaxAbsScaler()
>>> X_train_maxabs = max_abs_scaler.fit_transform(X_train)
>>> X_train_maxabs                # doctest +NORMALIZE_WHITESPACE^
array([[ 0.5, -1. ,  1. ],
       [ 1. ,  0. ,  0. ],
       [ 0. ,  1. , -0.5]])
>>> X_test = np.array([[ -3., -1.,  4.]])
>>> X_test_maxabs = max_abs_scaler.transform(X_test)
>>> X_test_maxabs                 
array([[-1.5, -1. ,  2. ]])
>>> max_abs_scaler.scale_         
array([2.,  1.,  2.])

它表示通过除以每个特征中的最大值来缩放训练数据,使其位于[-1,1]范围内。

当它在每个功能中都说出来时,我认为它适用于每列。

一个简单的解释就很好。

1 个答案:

答案 0 :(得分:1)

该功能按其最大绝对值缩放每个功能。 这里是X输入矩阵的每一列。


您在这里:

index.html

您会得到:

X_train = np.array([[ 1., -1.,  2.],
                    [ 2.,  0.,  0.],
                    [ 0.,  1., -1.]])

火车套说明

array([[ 0.5, -1. , 1. ], [ 1. , 0. , 0. ], [ 0. , 1. , -0.5]]) 中的第一个功能是第一列,即X_train。最大绝对值为[1,2,0]。然后,将该列的所有值除以2。因此新列变为2

类似地,您对其他2个功能/列也执行相同的操作。 对于功能2,最大绝对值为[0.5,1,0]。因此,新列保持不变。

最后,对于最后一个功能,最大绝对值为1。因此,最终功能变为2


测试集说明

接下来,您定义[2/2 , 0/2 , -1/2] = [1, 0, -0.5]。在这里,您有一个具有3个功能的示例。

重要洁牙机是使用训练集进行训练的,并且将使用训练集的最大绝对值。

因此,您得到:X_test = np.array([[ -3., -1., 4.]])

P.S:用于除法的值[ -3./2, -1./1, 4./2] = [-1.5, -1. , 2. ]来自使用训练集的估计。