Как использовать MaxAbsScaler для стандартизации значений от 1 до 100 - PullRequest
0 голосов
/ 04 марта 2019

Учитывая, что у меня есть данные во фрейме данных следующим образом:

import pandas as pd

value_1 = [1, 2, 3, 4, 5]
value_2 = [1000, 20000, 50000, 33000, 21000]
value_3 = [0, 1, 0, 1, 1]
value_4 = [4, 8, 12, 10, 19]
target  = [1, 22, 100, 77, 100]

name_of_columns = ['obs1', 'obs2', 'obs3', 'obs4', 'target']

data_final = pd.DataFrame(columns = name_of_columns)

data_final.obs1   = value_1
data_final.obs2   = value_2
data_final.obs3   = value_3
data_final.obs4   = value_4
data_final.target = target

введите описание изображения здесь

Целевой столбец варьируется от 1 до 100. Таким образомЯ хотел бы нормализовать другие столбцы, чтобы они варьировались от 1 до 100.

Как это сделать с помощью sklearn.preprocessing?Я определил модуль MaxAbsScaler, но не понял, как вводить параметры, чтобы значения находились в диапазоне от 1 до 100.

1 Ответ

0 голосов
/ 07 марта 2019

Вы, вероятно, хотите использовать MinMaxScaler вместо этого.С помощью этого скейлера вы можете указать диапазон для каждого столбца ([1100] в вашем случае).Вот как это будет сделано:

data = data_final[['obs1', 'obs2', 'obs3', 'obs4']]

from sklearn.preprocessing import MinMaxScaler
minmax = MinMaxScaler(feature_range = (1,100))
minmax.fit(data)
minmax.transform(data)

Это вернет следующее:

array([[  1.        ,   1.        ,   1.        ,   1.        ],
       [ 25.75      ,  39.3877551 , 100.        ,  27.4       ],
       [ 50.5       , 100.        ,   1.        ,  53.8       ],
       [ 75.25      ,  65.65306122, 100.        ,  40.6       ],
       [100.        ,  41.40816327, 100.        , 100.        ]])

Как вы можете видеть, все ваши столбцы теперь находятся в диапазоне от 1 до 100, так какжелательно.

...