Mélange de données catégorielles et continues dans un classificateur Bayes naïf en utilisant scikit-learn

j'utilise scikit-learn en Python pour développer un algorithme de classification pour prédire le sexe de certains clients. Entre autres, je veux utiliser le classificateur Bayes naïf, mais mon problème est que j'ai un mélange de données catégoriques (ex: "enregistré en ligne", "Accepte les notifications par email", etc) et des données continues (ex: "âge", "durée de l'adhésion", etc). Je n'ai pas utilisé scikit beaucoup avant, mais je suppose que ce Gaussian naïf Bayes est adapté pour les données continues et que Bernoulli naïf Bayes peut être utilisé pour les données catégorielles. Cependant, depuis que je veux données catégoriques et continues dans mon modèle, je ne sais pas vraiment comment gérer cela. Toutes les idées seraient très appréciées!

34
demandé sur Rahul Saxena 2013-01-10 13:08:22

2 réponses

Vous avez au moins deux options:

  • Transformez toutes vos données en une représentation catégorique en calculant des percentiles pour chaque variable continue, puis en binning les variables continues en utilisant les percentiles comme limites de bin. Par exemple pour la hauteur d'une personne créer les bacs: "très petit", "petit", "régulier", "grand", "très gros" veiller à ce que chaque cellule contient environ 20% de la population de votre formation. Nous n'avons pas de utilitaire pour effectuer cela automatiquement dans scikit-apprendre, mais il ne devrait pas être trop compliqué de le faire vous-même. Puis adaptez un NB multinomial unique sur ces représentations catégoriques de vos données.

  • ajustement indépendant D'un modèle NB gaussien sur la partie continue des données et d'un modèle NB multinomial sur la partie catégorique. Ensuite, transformez tous les ensembles de données en prenant les probabilités d'assignation de classe (avec predict_proba méthode) que de nouvelles fonctionnalités: np.hstack((multinomial_probas, gaussian_probas)) puis remonter une nouvelle modèle (par exemple un nouveau NB gaussien) sur les nouvelles caractéristiques.

37
répondu ogrisel 2013-01-10 10:36:23

la réponse simple: multiplier le résultat!! c'est la même chose.

naïf Bayes basé sur l'application du théorème de Bayes avec l'hypothèse "naïf" de l'indépendance entre chaque paire de caractéristiques - ce qui signifie que vous calculez la probabilité Bayes dépendant d'une caractéristique spécifique sans tenir les autres - ce qui signifie que l'algorithme multiplie chaque Probabilité à partir d'une caractéristique avec la probabilité de la deuxième caractéristique (et nous ignorons totalement le dénominateur - car il est juste un normalisateur).

donc la bonne réponse est:

  1. calculez la probabilité à partir des variables catégoriques.
  2. calculez la probabilité à partir des variables continues.
  3. multiplier 1. et 2.
5
répondu Yaron 2018-06-12 09:19:56