Скажем, у вас есть огромный файл данных с переменными объекта и одной целевой переменной. Теперь некоторые функции состоят из строк, таких как «b», «c», «t», «p», «g» и т. Д. 1011 *. Поскольку фреймворки не могут справиться с этим, вы должны кодировать их в числа. Самый простой вариант - использовать LabelEncoder. Это работает нормально, но только если строковые значения связаны друг с другом. В моем примере это ярлыки «ребенок», «ребенок», «подросток», «родитель» и «дедушка и бабушка». В этом случае вы, очевидно, захотите пометить их по порядку, например, baby = 0, child = 1, teen = 2 и так далее. Однако, если они не связаны друг с другом, модель обучения может думать, что это так, поэтому вы должны использовать что-то еще. Вот где OneHotEncoder присоединяется к бизнесу, чтобы разделить категориальные функции.
Однако мой вопрос: когда вы должны использовать OHE? Я спросил своего учителя, и он ответил: «Сначала получите корреляцию между функцией и целевой переменной при использовании только LE. Затем попробуйте OHE и посмотрите, улучшается ли корреляция. Если это так, используйте OHE, а если нет, продолжайте использовать LE». Проблема возникает следующим образом: как получить корреляцию между функцией и целевой переменной после использования OHE? OHE разбивает 1 элемент на X столбцов, в зависимости от количества различных параметров объекта, и я не уверен, как получить один корреляционный номер из этих X столбцов.
Исходный вопрос, если мое объяснение не соответствует хорошо:
Кодирование функций - есть много категориальных функций со значениями символов. Вам нужно будет использовать LabelEncoder и OneHotEncoder для них. Также посмотрите, нужно ли вам использовать OneHotEncoder для всех из них - например, проверяя корреляции между функцией LabelEncoded и целевой переменной до и после кодирования OneHot. (Кодировка OneHot не имеет никакого смысла, если ваша переменная на самом деле представляет собой какое-то инкрементное иерархическое отношение - и мы не знаем его для нашего набора данных).