Смешивание категориальных и непрерывных данных в наивном байесовском классификаторе с помощью scikit-learn
Я использую scikit-learn в Python для разработки алгоритма классификации для прогнозирования пола определенных клиентов. Среди прочего, я хочу использовать наивный классификатор Байеса, но моя проблема заключается в том, что у меня есть смесь категориальных данных (например: "зарегистрирован онлайн", "принимает уведомления по электронной почте" и т. д.) и непрерывных данных (например: "возраст", "продолжительность членства" и т. д.). Я не часто использовал scikit раньше, но я полагаю, что гауссовский наивный Байес подходит для непрерывных данных, а Бернулли наивен Байес может использоваться для категориальных данных. Однако, поскольку я хочу иметь в своей модели как категориальные, так и непрерывные данные, я не знаю, как с этим справиться. Любые идеи будут высоко оценены!
2 ответа:
У вас есть по крайней мере два варианта:
Преобразуйте все ваши данные в категориальное представление, вычисляя процентили для каждой непрерывной переменной и затем связывая непрерывные переменные, используя процентили в качестве границ Бина. Например, для роста человека создайте следующие бункеры:" очень маленький"," маленький"," обычный"," большой"," очень большой", гарантируя, что каждый бункер содержит приблизительно 20% населения вашего тренировочного набора. У нас нет никакой полезности, чтобы выполните это автоматически в scikit-learn, но это не должно быть слишком сложно, чтобы сделать это самостоятельно. Затем установите уникальный мультиномиальный NB на эти категориальные представления ваших данных.
Самостоятельно соответствовать гауссовой модели NB на непрерывную часть данных и модель НБ полиномиальной о категорическом часть. Затем преобразуйте весь набор данных, взяв вероятности присвоения классов (с помощью метода
predict_proba
) в качестве новых функций:np.hstack((multinomial_probas, gaussian_probas))
, а затем обновите новую модель (например, новый гауссовский NB) о новых возможностях.
Простой ответ: умножьте результат!! это одно и то же.
Наивный Байес, основанный на применении теоремы Байеса с "наивным" предположением о независимости между каждой парой признаков-это означает, что вы вычисляете вероятность Байеса, зависящую от конкретного признака, не удерживая другие, - что означает, что алгоритм умножает каждую вероятность от одного признака на вероятность от второго признака (и мы полностью игнорируем знаменатель - поскольку это всего лишь функция). нормализатор).
Итак, правильный ответ:
Вычислите вероятность по категориальным переменным. Вычислите вероятность из непрерывных переменных.
- умножьте на 1. и 2.