Mezclar datos categoriales y continuos en clasificador Bayes ingenuo usando scikit-learn


Estoy usando scikit-learn en Python para desarrollar un algoritmo de clasificación para predecir el género de ciertos clientes. Entre otros, quiero usar el clasificador Bayes Ingenuo, pero mi problema es que tengo una mezcla de datos categóricos (por ejemplo: "Registrado en línea", "Acepta notificaciones por correo electrónico", etc.) y datos continuos (por ejemplo: "Edad", "Duración de la membresía", etc.). No he usado scikit mucho antes, pero supongo que ese Gaussiano Naive Bayes es adecuado para datos continuos y ese Bernoulli Naive Bayes se puede utilizar para datos categóricos. Sin embargo, dado que quiero tener ambos datos categóricos y continuos en mi modelo, realmente no sé cómo manejar esto. Cualquier idea sería muy apreciada!

Author: Rahul Saxena, 2013-01-10

2 answers

Tienes al menos dos opciones:

  • Transforme todos sus datos en una representación categórica computando percentiles para cada variable continua y luego binning las variables continuas usando los percentiles como límites de bin. Por ejemplo, para la altura de una persona, cree los siguientes contenedores: "muy pequeño", "pequeño", "regular", "grande", "muy grande", asegurando que cada contenedor contenga aproximadamente el 20% de la población de su conjunto de entrenamiento. No tenemos ninguna utilidad para realice esto automáticamente en scikit-learn, pero no debería ser demasiado complicado hacerlo usted mismo. Luego, ajuste un NB multinomial único en esas representaciones categóricas de sus datos.

  • Ajuste independientemente un modelo NB gaussiano en la parte continua de los datos y un modelo NB multinomial en la parte categórica. Luego transforme todo el conjunto de datos tomando las probabilidades de asignación de clase (con el método predict_proba) como nuevas características: np.hstack((multinomial_probas, gaussian_probas)) y luego vuelva a configurar un nuevo modelo (por ejemplo, una nueva NB gaussiana) sobre las nuevas características.

 37
Author: ogrisel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-10 10:36:23

La respuesta simple: multiplicar el resultado!! es lo mismo.

Bayes Ingenuo basado en la aplicación del teorema de Bayes con la suposición "ingenua" de independencia entre cada par de entidades-lo que significa que se calcula la probabilidad de Bayes dependiente de una entidad específica sin sostener las otras-lo que significa que el algoritmo multiplica cada probabilidad de una entidad con la probabilidad de la segunda normalizador).

Así que la respuesta correcta es:

  1. calcule la probabilidad a partir de las variables categóricas.
  2. calcule la probabilidad a partir de las variables continuas.
  3. multiplicar 1. y 2.
 5
Author: Yaron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-12 09:19:56