我正在阅读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]范围内。
当它在每个功能中都说出来时,我认为它适用于每列。
一个简单的解释就很好。
答案 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. ]
来自使用训练集的估计。