2015-06-19 2 views
0

Я пытаюсь реализовать классификатор Naive Bayes в Python. Мои атрибуты имеют разные типы данных: Strings, Int, float, Boolean, OrdinalКлассификатор NaiveBayes, обрабатывающий разные типы данных в python

Я мог бы использовать классификатор Gaussian Naive Bayes (Sklearn.naivebayes: Python package), но я не знаю, как должны быть разные типы данных обрабатываются. Классификатор выдает ошибку, заявляя, что не может обрабатывать типы данных, отличные от Int или float

Один из способов, о котором я мог думать, - кодирование строк в числовые значения. Но я также сомневаюсь, насколько хорошо будет работать классификатор, если я это сделаю.

ответ

2

Да, вам нужно будет преобразовать строки в числовые значения Наивный классификатор Байеса не может обрабатывать строки, поскольку нет способа ввести строку в математическое уравнение.

Если ваши строки имеют некоторое «скалярное значение», например «большой, средний, маленький», вы можете классифицировать их как «3,2,1», Однако, если ваши строки - это вещи без порядка, такие как цвета или имена, вы можете сделать это или назначить двоичные переменные с каждой переменной, ссылающейся на цвет или имя, если их немного.

Например, если вы классифицируете автомобили, они могут быть красными синими и зелеными, вы можете определить переменные «Красный» «Синий» «Зеленый», которые принимают значения 0/1, в зависимости от цвета вашего автомобиля.

+0

В первом случае рекомендуется использовать LabelEncoder. А для второго у вас есть несколько способов сделать это с помощью DictVectorizer или OneHotEncoder – RPresle

+0

Хорошо, если я использую Encoder/One Hot Encoder, и тогда я хочу использовать Gaussian Naive Bayes на нем, будет ли проблема. Мы не можем сказать, что закодированные значения будут следовать правилу Гаусса? Особенно бинарный не будет гауссовским. –

+0

Да, для этого вам следует использовать Multinomial или Bernoulli NB. –

Смежные вопросы