Я хочу использовать класс GradientBoostingRegressor Sklearn для прогнозирования значений целевой переменной в задаче регрессии. Функции, которые у меня есть, имеют смешанный тип: некоторые из них являются непрерывными числовыми, некоторые являются логическими, два являются категориальными, а один - вектором непрерывных чисел. Я выбираю градиент, повышающий деревья, потому что данные имеют смешанные типы данных. Примером вектор-функции будет:Gradient Boosting with Sklearn
['Категория1', 41.93655, -87.642079, 0, 0, < 1x822 разреженная матрица типа '' с 4 сохраненными элементами в формате сжатого разреженного диапазона>, 'mobile_app', «NA»]
Однако, когда я пытаюсь обучить GradientBoostingRegressor с нужным(), я получаю сообщение об ошибке сказав:
ValueError: не удалось преобразовать строку плавать: category1
значение этой функции являются реализован с перечислением. У меня есть только метод:
def enum(self, **enums):
return type('Enum',(), enums)
Тогда, когда я создаю свои категории, я делаю это так:
categories = self.enum(Category1='Category1', Category2='Category2', ...)
Я думаю, проблема в том, что она по-прежнему возвращается фактическое значение в виде строки. Но если я изменю значения на 0, 1, 2 и т. Д., Это сделает некоторые категории «ближе» к другим, когда они должны быть равноудалены от всех других категорий.
Значит, этот объект фактически обрабатывает данные смешанного типа или все это нужно делать численно? Если он должен быть все числовым, имеет ли кто-нибудь, кто обрабатывал категориальные данные с этим объектом, проливает свет на лучший способ представления категорий? Любая помощь оценивается