Использование "одной горячей" кодированной зависимой переменной в случайном лесу

Я строю случайный лес в python, используя sklearn-learn, и применил "одну горячую" кодировку ко всем категориальным переменным. Вопрос: если я применяю "один горячий" к моему DV, я применяю все его фиктивные столбцы как DV, или DV должен обрабатываться по-другому?

2 ответа

Зависит от типа вашей проблемы. Для бинарных или мультиклассовых задач вам не нужна одна горячая кодировка зависимой переменной в scikit-learn, Выполнение однократного кодирования изменит форму выходной переменной с одного измерения на несколько измерений. Это называется матрицей меток-индикаторов, где каждый столбец обозначает наличие или отсутствие этой метки.

Например, выполняя горячее кодирование следующего:

['high', 'medium', 'low', 'high', 'low', 'high', 'medium']

вернет это:

high    medium    low
 1        0        0
 0        1        0
 0        0        1
 1        0        0
 0        0        1
 1        0        0
 0        1        0

Не все классификаторы в scikit-learn способны поддерживать этот формат (даже если они поддерживают мультиклассовую классификацию) Даже в тех, которые поддерживают это, это вызовет классификацию по нескольким меткам (в которой одновременно может присутствовать более одной метки), что вам и нужно не хочу в многоклассовой задаче.

Вам необходимо применить горячее кодирование ко всем тем столбцам, где значения не в числах. Вы также можете обрабатывать DV с горячими столбцами и другими нечисловыми столбцами с другим кодированием. Например: предположим, что есть столбец с названиями городов, вам нужно изменить его в числовой форме. Это называется ФОРМИРОВАНИЕ ДАННЫХ. Вы можете сделать это литье без одного горячего.

Например: есть колонка DV для диабета с записями "да" и "нет". Это без горячего кодирования.

diabetes_map = {True : 1, False : 0}
df['diabetes'] = df['diabetes'].map(diabetes_map)
Другие вопросы по тегам