Как использовать RobustScaler на всех столбцах? - PullRequest
0 голосов
/ 25 сентября 2018

Прямо сейчас у меня есть массив 2 на 2.Используя RobustScaler, он нормализует каждый столбец по одному, в то время как я хочу нормализовать все сразу.Есть ли в любом случае, чтобы сделать это?

1 Ответ

0 голосов
/ 25 сентября 2018

Из документации RobustScaler :

удаляет медиану и масштабирует данные в соответствии с квантильным диапазоном

Так что вам нужно вычислитьсредний и квантильный диапазон для всего массива, для этого вы можете использовать функции np.median и np.percentile , это то, что sklearn делает под капотом.Код:

import numpy as np
from sklearn.preprocessing import robust_scale

data = np.array([[3, 6],
                 [9, 12]], dtype=np.float64)
result = robust_scale(data, axis=0)
print(result)

reshape = data.reshape((1, 4))
result = robust_scale(reshape, axis=1)

me = np.median(data.flat) # 7.5
percentiles = np.percentile(data, (25.0, 75.0)) # 5.25 9.75

data -= me
data /= (percentiles[1] - percentiles[0])

print(data)

Выход

[[-1. -1.]
 [ 1.  1.]]
[[-1.         -0.33333333]
 [ 0.33333333  1.        ]]

В примере я использовал (25.0, 75.0), потому что это значения по умолчанию для диапазона квантиля, а также функция robust_scale эквивалентно функциональности RobustScaler (см. Также раздел «Документация»).

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