sklearn normalize () создает каждое значение как 1 - PullRequest
0 голосов
/ 12 ноября 2019

Я пытаюсь нормализовать одну особенность к [0, 1], но в результате я получаю все значения с плавающей запятой 1 и явно ошибочна.

import pandas as pd
import numpy as np
from sklearn.preprocessing import normalize

test = pd.DataFrame(data=[7, 6, 5, 2, 9, 9, 7, 8, 6, 5], columns=['data'])
normalize(test['data'].values.reshape(-1, 1))

Это приводит к следующему выводу:

array([[1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.]])

Я подумал, что это может быть проблема типа типа int для float, поэтому я попытался сначала привести приведение к float, normalize(test['data'].astype(float).values.reshape(-1, 1)), но это даеттот же результат. Чего мне не хватает?

Ответы [ 2 ]

1 голос
/ 12 ноября 2019

Я чувствую, что мы можем использовать

(test.data-test.data.min())/np.ptp(test.data.values)
Out[136]: 
0    0.714286
1    0.571429
2    0.428571
3    0.000000
4    1.000000
5    1.000000
6    0.714286
7    0.857143
8    0.571429
9    0.428571
Name: data, dtype: float64
1 голос
/ 12 ноября 2019

Это потому, что значение по умолчанию axis равно 1.

Установить axis = 0:

normalize(test['data'].values.reshape(-1, 1), axis=0)

Выход:

array([[0.32998316],
       [0.28284271],
       [0.23570226],
       [0.0942809 ],
       [0.42426407],
       [0.42426407],
       [0.32998316],
       [0.37712362],
       [0.28284271],
       [0.23570226]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...