Из документации 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 (см. Также раздел «Документация»).