Классификатор NaiveBayes, обрабатывающий различные типы данных в Python
Я пытаюсь реализовать наивный байесовский классификатор в Python. Мои атрибуты имеют разные типы данных: Strings, Int, float, Boolean, Ordinal
Я мог бы использовать гауссовский наивный байесовский классификатор (Sklearn.naivebayes: пакет Python), но я не знаю, как обрабатывать различные типы данных. Классификатор выдает ошибку, заявляя, что не может обрабатывать типы данных, кроме Int или float
Один из способов, который я мог бы придумать, - это кодирование строк в числовые значения. Но я также сомневаюсь, насколько хорошо классификатор будет работать, если я сделаю это.
2 ответа
Да, вам нужно будет преобразовать строки в числовые значения. Наивный байесовский классификатор не может обрабатывать строки, поскольку строка не может быть введена в математическое уравнение.
Если ваши строки имеют некоторое "скалярное значение", например, "большой, средний, маленький", вы можете классифицировать их как "3,2,1". Однако, если ваши строки представляют собой вещи без порядка, такие как цвета или имена, вы можете сделать это или назначить двоичные переменные с каждой переменной, ссылающейся на цвет или имя, если их не много.
Например, если вы классифицируете автомобили и они могут быть красного, синего и зеленого цвета, вы можете определить переменные "Красный", "Синий", "Зеленый", которые принимают значения 0/1, в зависимости от цвета вашего автомобиля.
Не конвертируйте тип данных вручную, вместо этого используйте векторизацию dict.
http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.DictVectorizer.html