Как нормализовать столбцы DataFrame с помощью sklearn.preprocessing.normalize? - PullRequest
2 голосов
/ 10 мая 2019

Есть ли способ нормализовать столбцы DataFrame, используя sklearn's normalize? Я думаю, что по умолчанию он нормализует строки

For example, if I had df:
A     B
1000  10
234   3
500   1.5

Я бы хотел получить следующее:

A       B
1       1
0.234   0.3
0.5     0.15

Ответы [ 4 ]

2 голосов
/ 10 мая 2019

sklearn по умолчанию нормализует строки с нормализацией L2 . Оба эти аргумента должны быть изменены для желаемой нормализации по максимальному значению по столбцам:

from sklearn import preprocessing 

preprocessing.normalize(df, axis=0, norm='max')
#array([[1.   , 1.   ],
#       [0.234, 0.3  ],
#       [0.5  , 0.15 ]])
2 голосов
/ 10 мая 2019

Вы можете использовать div после получения max

df.div(df.max(),1)
Out[456]: 
       A     B
0  1.000  1.00
1  0.234  0.30
2  0.500  0.15
2 голосов
/ 10 мая 2019

Зачем вам нужно sklearn?

Просто используйте панд:

>>> df / df.max()
       A     B
0  1.000  1.00
1  0.234  0.30
2  0.500  0.15
>>> 
0 голосов
/ 10 мая 2019

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

Ось: 0 или 1, необязательная (по умолчанию 1) ось, используемая для нормализации данных.Если 1, независимо нормализуйте каждый образец, в противном случае (если 0) нормализуйте каждый элемент.

Так что просто измените ось.Сказав это, sklearn является излишним для этой задачи.Это может быть легко достигнуто с помощью панд.

...