Comment spécifier la probabilité a priori pour scikit-learn Naive Bayes
Je suis en utilisant le scikit-learn apprentissage de la machine de la bibliothèque (Python) pour une machine d'apprentissage du projet. L'un des algorithmes que j'utilise est la Gaussienne Naive Bayes mise en œuvre. L'un des attributs de la GaussianNB() fonction est la suivante:
class_prior_ : array, shape (n_classes,)
Je veux modifier la classe avant manuellement, car les données que j'utilise est très asymétrique et le rappel de l'une des classes est très important. Par l'attribution d'une haute probabilité a priori de la classe le rappel devrait augmenter.
Cependant, je ne peux pas comprendre comment définir l'attribut correctement. J'ai lu ci-dessous les sujets déjà mais leurs réponses ne fonctionnent pas pour moi.
Comment les probabilités antérieures définir manuellement pour la Naive Bayes fcf dans scikit-learn?
C'est mon code:
gnb = GaussianNB()
gnb.class_prior_ = [0.1, 0.9]
gnb.fit(data.XTrain, yTrain)
yPredicted = gnb.predict(data.XTest)
J'ai pensé que c'était la syntaxe correcte et je pouvais savoir à quelle classe appartient à qui la place dans le tableau de jouer avec les valeurs mais les résultats restent inchangés. Aussi aucune erreur n'a été donnée.
Quelle est la façon correcte de la définition des attributs de la GaussianNB algorithme de scikit-learn bibliothèque?
Lien vers le scikit documentation de GaussianNB
OriginalL'auteur pevadi | 2015-06-17
Vous devez vous connecter pour publier un commentaire.
La GaussianNB() mis en œuvre dans scikit-learn ne vous permet pas de définir la classe avant. Si vous lisez la documentation en ligne, à vous de voir .class_prior_ est un attribut plutôt que paramètres. Une fois que vous correspondez à la GaussianNB(), vous pouvez obtenir l'accès à class_prior_ attribut. Il est calculé en comptant le nombre de différentes étiquettes dans votre programme de formation de l'échantillon.
Vous voyez l'estimateur est assez intelligent pour prendre en compte le déséquilibre problème de poids. Si vous n'avez pas à spécifier manuellement les prieurs.
sans modification de leur code, il y a un moyen: s'il est important de rappeler Classe 1, ajouter des copies supplémentaires de chaque exemple d'apprentissage dont l'étiquette est de Classe 1. Ce sera la cause de la Classe 1 ont une plus forte probabilité a priori, qui sera biais de l'algorithme pour prédire la Classe 1 plus souvent.
OriginalL'auteur Jianxun Li
@Jianxun Li: il y a en fait un moyen de mettre en avant les probabilités dans GaussianNB. Il est appelé "prieurs" et son disponibles en tant que paramètre. Voir la documentation:
"Paramètres: a priori : semblable au tableau, la forme (n_classes,)
Avant probabilités des classes. Si spécifié, les prieurs ne sont pas ajustés en fonction des données."
Alors laissez-moi vous donner un exemple:
Mais si vous avez modifié les probabilités antérieures, il va donner une autre réponse, qui est ce que vous cherchez, je crois.
OriginalL'auteur Ram Seshadri