Неожиданный вывод StandardScaler fit_transform

Я пытаюсь масштабировать серию панд с помощью StandardScaler().fit_transform(). Однако вывод всегда представляет собой массив нулей.

Входная серия имеет длину 201, когда я делаю:

print values[:5]

Я получаю список поплавков, как показано ниже:

0    1943.0
1     508.0
2    1657.0
3     872.0
4     693.0

Когда я применяю скейлер:

X = preprocessing.StandardScaler().fit_transform(values)
print X

Выход:

[[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
0.  0.  0.]]

Как я могу это исправить?


person user3391529    schedule 13.09.2016    source источник
comment
Вы уверены, что у вас pd.Series? проверьте с помощью type(values) это обычно происходит, если у вас есть фрейм данных с несколькими столбцами.   -  person elyase    schedule 13.09.2016
comment
Я уверен, что это серия (я создал ее как pd.Series(data=lst) ). Однако это серия с характеристиками одного образца, возможно ли масштабировать один образец с помощью StandardScaler? Мне удалось решить проблему, используя вместо этого preprocessing.scale(values, axis=1)   -  person user3391529    schedule 15.09.2016
comment
можете ли вы создать mcve с примерами данных? Я попробовал ваш код, и он работает нормально для меня.   -  person elyase    schedule 15.09.2016
comment
В вашем примере values - это DataFrame, а вы упоминаете, что уверены, что ваши данные являются pd.Series. Вы можете проверить, что вы передаете скейлеру, с помощью type(values).   -  person elyase    schedule 23.09.2016
comment
если вы используете pd.Series, например inpt = pd.Series(range(5));scaler.fit_transform(inpt.reshape(-1, 1)), то он работает как надо.   -  person elyase    schedule 23.09.2016