Может кто-нибудь объяснить MaxAbsScaler в Scikit-learn? - PullRequest
1 голос
/ 14 октября 2019

Я читал документы для 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 Ответ

1 голос
/ 14 октября 2019

Функция Масштабирует каждую функцию по ее максимальному абсолютному значению. Функция - это каждый столбец матрицы ввода X.


Здесь у вас есть:

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. Таким образом, новый столбец становится [0.5,1,0]

Точно так же вы делаете то же самое для других 2 функций / столбцов. Для функции 2 максимальное абсолютное значение составляет 1. Таким образом, новый столбец остается прежним.

Наконец, для последней функции у вас есть максимальное абсолютное значение 2. Таким образом, последняя функция становится [2/2 , 0/2 , -1/2] = [1, 0, -0.5].


Набор тестов Пояснение

Далее вы определяете X_test = np.array([[ -3., -1., 4.]]). Здесь у вас есть один образец с 3 функциями.

ВАЖНО : Скалер обучен с использованием тренировочного набора и будет использовать максимальные абсолютные значения тренировочного набора.

Итак, вы получите:[ -3./2, -1./1, 4./2] = [-1.5, -1. , 2. ]

PS: значения 2,1 and 2, используемые для деления, получены из оценки с использованием обучающего набора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...