Sklearn Scaler выходное поведение - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть ситуация, когда я хочу применить объект StandardScaler для sklearn к одному столбцу моего информационного кадра. Код ниже:

import pandas as pd
from sklearn.preprocessing import StandardScaler

df = pd.DataFrame([(1,2,3), (2,3,4), (3,4,5)], columns=['a','b','c'])
scaler = StandardScaler().fit(df['c'].values.reshape(-1,1))
df['d'] = df['c'].apply(scaler.transform)
df

Когда я масштабирую столбец c и выводу результат в столбец d, значения в d выглядят как [[-1.224744871391589]] с формой (1,1)

Я бы ожидал, что выходное значение будет числовым, а не списком, как показано выше. Конечно, я могу обойти это, делая что-то вроде df['d'] = df['d'].apply(lambda x: x[0][0]), но если не нужно, я хочу избежать таких дополнительных осложнений.

Я неправильно использую объект масштабирования или это единственный способ обойти его? Заранее спасибо!

1 Ответ

0 голосов
/ 30 апреля 2018

Обычай состоит в том, чтобы сначала создать экземпляр трасформера / оценщика, а затем подогнать и преобразовать. Вот что получилось с несколькими незначительными изменениями:

import pandas as pd
from sklearn.preprocessing import StandardScaler

df = pd.DataFrame([(1,2,3), (2,3,4), (3,4,5)], columns=['a','b','c'])

scaler = StandardScaler()

scaler.fit(df['c'].values.reshape(-1,1))

df['d'] = scaler.transform(df['c'].values.reshape(-1,1))
df

Out[84]: 
   a  b  c         d
0  1  2  3 -1.224745
1  2  3  4  0.000000
2  3  4  5  1.224745
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...