Названия функций от OneHotEncoder - PullRequest
0 голосов
/ 07 февраля 2019

Я использую OneHotEncoder для кодирования нескольких категориальных переменных (например, пол и возрастная группа).Результирующие имена объектов из кодировщика имеют вид: 'x0_female', 'x0_male', 'x1_0.0', 'x1_15.0' и т. Д.

>>> train_X = pd.DataFrame({'Sex':['male', 'female']*3, 'AgeGroup':[0,15,30,45,60,75]})

>>> from sklearn.preprocessing import OneHotEncoder
>>> encoder = OneHotEncoder()
>>> train_X_encoded = encoder.fit_transform(train_X[['Sex', 'AgeGroup']])
>>> encoder.get_feature_names()
>>> array(['x0_female', 'x0_male', 'x1_0.0', 'x1_15.0', 'x1_30.0', 'x1_45.0',
       'x1_60.0', 'x1_75.0'], dtype=object)

Есть ли способ сказать OneHotEncoder для создания имен объектов таким образом, чтобы имя столбца добавлялось в начале, что-то вроде - Sex_female, AgeGroup_15.0 и т. Д., Аналогично тому, что делает Pandas get_dummies().

Ответы [ 2 ]

0 голосов
/ 17 мая 2019
column_name = encoder.get_feature_names(['Sex', 'AgeGroup'])
one_hot_encoded_frame =  pd.DataFrame(train_X_encoded, columns= column_name)
0 голосов
/ 17 марта 2019

Вы можете передать список с оригинальными именами столбцов в get_feature_names:

encoder.get_feature_names(['Sex', 'AgeGroup'])

вернет:

['Sex_female', 'Sex_male', 'AgeGroup_0', 'AgeGroup_15',
 'AgeGroup_30', 'AgeGroup_45', 'AgeGroup_60', 'AgeGroup_75']
...