Как создавать метки (автокодирование) в Python

У меня есть такой фрейм данных:

Name  subname Feature1  Feature2 ...
AAA     a     0.123     0.345 ...
AAA     b     0.123     0.345 ...
BBB     a     0.123     0.345 ...
BBB     b     0.123     0.345 ...

Я хочу создать метки (добавив новый столбец):

Name  subname Feature1  Feature2 ...Class
AAA     a     0.123     0.345 ...    1
AAA     b     0.123     0.345 ...    1
BBB     a     0.123     0.345 ...    2
BBB     b     0.123     0.345 ...    2

Чтобы я мог поместить данные в модель классификации, есть ли способ эффективно создавать эти метки? Я получил более 5000 строк, большое спасибо.


person Cecilia    schedule 22.07.2019    source источник
comment
Что вы кодируете, просто Name? Если это так df['Class'] = pd.factorize(df['Name'])[0] + 1, если это факторизация 2D, вы можете использовать np.unique с return_inverse   -  person user3483203    schedule 22.07.2019
comment
У вас есть метки в отдельном кадре данных или серии или что?   -  person adnanmuttaleb    schedule 22.07.2019
comment
да, только в соответствии с «Именем», есть метки в последнем столбце, чтобы я мог вписаться в модель GDBT для выбора функций, это правильный способ сделать это?   -  person Cecilia    schedule 22.07.2019
comment
Оба ответа в обмане совершенно верны, вы можете выбрать, какой использовать   -  person user3483203    schedule 22.07.2019
comment
@user3483203 user3483203 Я проверил несколько руководств в Google, могу ли я использовать что-то вроде «из sklearn.preprocessing import LabelEncoder»? Будет ли это то же самое? Большое спасибо.   -  person Cecilia    schedule 22.07.2019


Ответы (1)


Можешь попробовать

labels, uniques = pd.factorize(df['Name'].tolist())
df['labels'] = labels

и получит array([0, 0, 1, 1])

person Lumos    schedule 22.07.2019