Як я можу відповідати категоричним типам даних для випадкової класифікації лісів?


12

Мені потрібно знайти точність набору даних, застосовуючи алгоритм Random Forest. Але мій тип мого набору даних є і категоричним, і числовим. Коли я намагався вкласти ці дані, я отримую помилку.

'Вхід містить NaN, нескінченність або занадто велике значення для dtype (' float32 ')'.

Можливо, проблема полягає в об'єктних типах даних. Як я можу відповідати категоричним даним без перетворення для застосування РФ?

Ось мій код.

скріншот

скріншот

скріншот


Вам не потрібно проводити one_hot, якщо ви використовуєте модель дерева, тому що це не вимірювання відстані, як інший метод.
Червень Ян

1
@JunYang, scikit-learn на сьогодні вимагає кодування категорій.
Бен Райнігер

Відповіді:


11

Потрібно перетворити категоричні ознаки в числові атрибути. Поширений підхід - використання однокольорового кодування, але це, безумовно, не єдиний варіант. Якщо у вас є змінна з великою кількістю категоріальних рівнів, вам слід розглянути можливість комбінування рівнів або використання хитрості. Sklearn оснащений декількома підходами (ознайомтеся з розділом "див. Також"): Один гарячий енкодер і трюк хешингу

Якщо ви не прихильні до склеарну, випадкова реалізація лісу h2o безпосередньо керує категоричними ознаками.


0

Наскільки я знаю, є проблема з отриманням подібних помилок. По-перше, в моїх наборах даних існує додатковий простір, тому чому відображається помилка: "Введення містить значення NAN; По-друге, python не в змозі працювати з будь-якими типами об'єктного значення. Нам потрібно перетворити це об'єктне значення в числове значення. Для перетворення об'єкта в числовий існує процес кодування двох типів: кодер мітки та один гарячий кодер. Якщо кодер мітки кодує значення об'єкта від 0 до n_classes-1 і один гарячий кодер, значення кодує від 0 до 1. У своїй роботі, перед тим, як підходити до моїх даних для будь-якого типу методу класифікації, я використовую кодер Label для перетворення значення і перед перетворенням я переконуюсь, що у моєму наборі даних немає порожнього простору.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.