Мне нужно найти точность набора обучающих данных, применяя алгоритм случайного леса. Но мой тип набора данных - как категориальный, так и числовой. Когда я пытался уместить эти данные, я получаю сообщение об ошибке.
'Вход содержит NaN, бесконечность или значение, слишком большое для dtype (' float32 ')'.
Может быть проблема в объектных типах данных. Как я могу соответствовать категориальным данным без преобразования для применения RF?
Вот мой код
python
data-mining
random-forest
IS2057
источник
источник
Ответы:
Вам необходимо преобразовать категориальные признаки в числовые атрибуты. Распространенным подходом является использование однократного кодирования, но это определенно не единственный вариант. Если у вас есть переменная с большим количеством категориальных уровней, вы должны рассмотреть возможность объединения уровней или использования трюка хеширования. Sklearn оснащен несколькими подходами (см. Раздел «см. Также»): один горячий кодер и трюк хеширования
Если вы не заинтересованы в sklearn, реализация случайного леса h2o напрямую обрабатывает категориальные функции.
источник
Насколько я знаю, есть некоторые проблемы для получения этих типов ошибок. Во-первых, в моих наборах данных есть дополнительное пространство, поэтому при отображении ошибки «Вход содержит значение NAN; Во-вторых, python не может работать с любыми типами объектов. Нам нужно преобразовать значение этого объекта в числовое значение. Для преобразования объекта в число существует процесс кодирования двух типов: кодировщик меток и один горячий кодировщик. Где кодировщик меток кодирует значение объекта в диапазоне от 0 до n_classes-1, а один горячий кодировщик кодирует значение в диапазоне от 0 до 1. В моей работе перед тем, как подгонять свои данные для любого типа метода классификации, я использую кодировщик этикеток для преобразования значения, а перед преобразованием я гарантирую, что в моем наборе данных нет пробелов.
источник