У меня есть набор данных, который включает в себя более 100 стран.Я хочу включить их в модель XGBoost, чтобы сделать классификационный прогноз.Я знаю, что One Hot Encoding является подходящим процессом для этого, но я бы предпочел сделать что-то, что не увеличит размерность так сильно и будет устойчивым к новым значениям, поэтому я пробую двоичную классификацию с использованием пакета category_encoders
.http://contrib.scikit -learn.org / категорическое-кодирование / двоичное.html
Использование этой кодировки помогло моей модели отказаться от использования базового кодирования в горячем режиме, но как мне вернуться коригинальные метки после кодирования?
Я знаю о методе inverse_transform
, но он действует на весь фрейм данных.Мне нужен способ, где я могу положить двоичное или целочисленное значение и получить исходное значение.
Вот несколько примеров данных, взятых из: https://towardsdatascience.com/smarter-ways-to-encode-categorical-data-for-machine-learning-part-1-of-3-6dca2f71b159
import numpy as np
import pandas as pd
import category_encoders as ce
# make some data
df = pd.DataFrame({
'color':["a", "c", "a", "a", "b", "b"],
'outcome':[1, 2, 3, 2, 2, 2]})
# split into X and y
X = df.drop('outcome', axis = 1)
y = df.drop('color', axis = 1)
# instantiate an encoder - here we use Binary()
ce_binary = ce.BinaryEncoder(cols = ['color'])
# fit and transform and presto, you've got encoded data
ce_binary.fit_transform(X, y)
![output](https://cdn-images-1.medium.com/max/800/1*fVZyy09cfDzYQTvILCqtEQ.png)
Я хотел бы передать значения [0,0,1]
или 1
в функцию и получить обратно a
в качестве значения.
Основная причина этого заключается в рассмотренииОсобенности значимости модели.Я могу получить значения функций на основе столбца, но это даст мне идентификатор столбца, а не базовое значение категории, которая является наиболее важной.