Существует много способов кодирования категориальных данных, некоторые из которых зависят от того, что именно вы планируете делать с ними.Например, «горячее» кодирование, которое, пожалуй, является самым популярным выбором, является крайне плохим выбором , если вы планируете использовать дерево решений / случайный лес / GBM.
Относительно вашегофутболки выше, вы можете дать категоричному типу панд заказ:
df['T-size'].astype(pd.api.types.CategoricalDtype(['S','M','L'],ordered=True)).
, если бы вы настроили свою футболку категорически таким образом, тогда ваш метод .cat.codes
будет работать отлично.Это также означает, что вы можете легко использовать scikit-learn's LabelEconder
, который отлично вписывается в конвейеры.
Что касается кодировки пола, вам нужно быть очень осторожным при использовании целевой переменной (вашей Label
).Вы не хотите делать эту кодировку перед разделением теста на поезд, иначе вы используете знания ваших невидимых данных, что делает их невидимыми.Это становится еще более сложным, если вы используете перекрестную проверку, так как вам нужно выполнять кодирование в каждой итерации CV (то есть, новое кодирование для каждого раза).Если вы хотите сделать это, я рекомендую вам проверить TargetEncoder из кодировщиков категории skcontribs, но опять же, обязательно используйте это в пределах sklearn Pipeline
, иначе вы испортите разделение теста поезда и информацию об утечкахиз вашего тестового набора в тренировочный набор.