sklearn.preprocessing.MinMaxScaler () возвращает только 0 или 1, а не float - PullRequest
3 голосов
/ 26 мая 2020

По какой-то причине это возвращает только 0 или 1 вместо числа с плавающей запятой между ними.

from sklearn import preprocessing

X = [[1.3, 1.6, 1.4, 1.45, 12.3, 63.01,],
    [1.9, 0.01, 4.3, 45.4, 3.01, 63.01]]

minmaxscaler = preprocessing.MinMaxScaler()
X_scale = minmaxscaler.fit_transform(X)

print(X_scale) # returns [[0. 1. 0. 0. 1. 0.] [1. 0. 1. 1. 0. 0.]]

Ответы [ 2 ]

2 голосов
/ 26 мая 2020

Minmax Scaler не может работать со списком списков, он должен работать, например, с массивом numpy (или фреймами данных).

Вы можете преобразовать в массив numpy. Это приведет к 6 функциям с 2 образцами, что, я думаю, не то, что вы имеете в виду, поэтому вам также нужно изменить форму.

import numpy

X = numpy.array([[1.3, 1.6, 1.4, 1.45, 12.3, 63.01,],
    [1.9, 0.01, 4.3, 45.4, 3.01, 63.01]]).reshape(-1,1)

Результаты после MinMax Scaler:

[[0.02047619]
 [0.0252381 ]
 [0.02206349]
 [0.02285714]
 [0.19507937]
 [1.        ]
 [0.03      ]
 [0.        ]
 [0.06809524]
 [0.72047619]
 [0.04761905]
 [1.        ]]

Не совсем уверен, хотите ли вы минимизировать каждый список по отдельности или все вместе

0 голосов
/ 26 мая 2020

Ответ, который вы получили от MinMaxScaler, является ожидаемым.

Когда у вас есть только две точки данных, вы получите только 0 и 1. См. Пример здесь для сценария с тремя точками данных.

Вы должны понимать, что он преобразует наименьшее значение в 0 и наибольшее значение в 1 для каждого столбца. Когда у вас будет больше точек данных, оставшиеся будут рассчитываться на основе диапазона (Макс-мин). см. формулу здесь .

Кроме того, MinMaxScaler принимает 2D-данные, что означает, что списки списков приемлемы. Это причина, по которой у вас не было ошибок.

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