python - pure - Mezclando datos categóricos y continuos en el clasificador Naive Bayes usando scikit-learn
scikit learn classification models (2)
La respuesta simple: ¡multiplica el resultado! es lo mismo.
Naive Bayes basado en aplicar el teorema de Bayes con la suposición de independencia "ingenua" entre cada par de características, lo que significa que calcula la probabilidad de Bayes dependiente de una característica específica sin tener otras, lo que significa que el algoritmo multiplica cada probabilidad de una característica con la probabilidad de la segunda característica (e ignoramos totalmente el denominador, ya que es solo un normalizador).
entonces la respuesta correcta es:
- calcule la probabilidad de las variables categóricas.
- calcule la probabilidad de las variables continuas.
- multiplicar 1. y 2.
Estoy usando scikit-learn en Python para desarrollar un algoritmo de clasificación para predecir el sexo de ciertos clientes. Entre otros, quiero usar el clasificador Naive Bayes, pero mi problema es que tengo una combinación 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 membresía, etc.). No he usado scikit mucho antes, pero supongo que Gaussian Naive Bayes es adecuado para datos continuos y que Bernoulli Naive Bayes puede usarse para datos categóricos. Sin embargo, dado que quiero tener datos continuos y categóricos en mi modelo, realmente no sé cómo manejar esto. ¡Cualquier idea será altamente apreciada!
Tienes al menos dos opciones:
Transforme todos sus datos en una representación categórica calculando percentiles para cada variable continua y luego agrupando las variables continuas usando los percentiles como límites de la celda. Por ejemplo, para la altura de una persona, cree los siguientes contenedores: "muy pequeño", "pequeño", "regular", "grande", "muy grande", asegurándose de que cada contenedor contenga aproximadamente el 20% de la población de su conjunto de entrenamiento. No tenemos ninguna utilidad para realizar esto automáticamente en scikit-learn, pero no debería ser demasiado complicado hacerlo usted mismo. Luego ajuste un NB multinomial único en la representación categórica de sus datos.
Ajuste de forma independiente un modelo de NB gaussiano en la parte continua de los datos y un modelo de NB multinomial en la parte categórica. Luego, transforma todo el conjunto de datos tomando las probabilidades de asignación de clases (con el método
predict_proba
) como nuevas características:np.hstack((multinomial_probas, gaussian_probas))
y luego reajusta un nuevo modelo (por ejemplo, un nuevo NB gaussiano) en las nuevas características.