Использование "одной горячей" кодированной зависимой переменной в случайном лесу
Я строю случайный лес в 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)