méthode fit
Leçon 13 sur 19 du cours Introduction à l’apprentissage automatique de Coddy.
Voici la formule de Naive Bayes :<strong>P(Class|Feature) = P(Feature|Class) * P(Class) / P(Feature)</strong>
Nous avons déjà calculé <strong>P(Feature|Class)</strong> et <strong>P(Class)</strong> dans la leçon précédente.
Maintenant, sur la base de principes mathématiques, nous pouvons simplifier nos calculs en omettant P(Feature). Par exemple, si 5 > 3 et que nous divisons les deux côtés par 10 (pour obtenir 5/10 > 3/10), l'inégalité reste vraie.
Par conséquent, notre formule simplifiée devient : P(Class|Feature) = P(Feature|Class) * P(Class).
Considérez un nouveau point de données avec les attributs suivants :
| temperature | mood | motivation | windy |
| low | happy | high | yes |
Pour calculer pour toutes les instances où play = yes, utilisez la formule :
P(temperature=<strong>low</strong>|play=Yes) * P(mood= <strong>happy</strong>|play=Yes) * P(motivation= <strong>high</strong>|play=Yes) * P(windy=<strong>yes</strong>|play=Yes) * p(play=yes)
Toutes ces données sont déjà enregistrées dans nos variables probability_features et probability_target :
p_yes = probability_features["temperature"]["low"]["yes"] *
probability_features["mood"]["happy"]["yes"] *
probability_features["motivation"]["high"]["yes"] *
probability_features["windy"]["yes"]["yes"] *
probability_target["yes"]Maintenant, nous devons faire la même chose pour play = no.
Après avoir obtenu les deux probabilités, nous les comparons pour déterminer la plus grande.
Si p_yes est supérieur à p_no, nous classons ce nouveau point de données comme yes ; sinon, nous le classons comme no.
Défi
MoyenDans ce défi, complétez la méthode fit afin qu'elle stocke les probabilités dans self.probability_features et self.probability_target, tout comme nous l'avons fait dans la leçon précédente.
y_train est notre variable cible, et X_train est notre ensemble de données de caractéristiques.
De plus, complétez la méthode get_classes_probability. Cette méthode doit prendre un nouveau point de données (semblable à l'exemple fourni précédemment) et retourner les probabilités pour chaque classe de la variable cible (le p_yes et p_no).
La sortie doit être au format suivant (selon les valeurs de la variable cible y_train) :
classes_probabilities = {
"yes": 0.00,
"no": 0.00,
}Gardez à l'esprit que les noms des caractéristiques et les noms des attributs ne sont pas constants. Chaque ensemble de données possède des caractéristiques et des noms différents.
Essayez vous-même
class NaiveBayes:
class __init__(self):
pass
def get_classes_probability(self, X):
# X contient un dataframe avec une seule ligne
# utilisez self.classes qui a été sauvegardé dans la méthode fit
# écrivez votre code ci-dessous
classes_probabilities = {}
# --------------------------
return classes_probabilities
def fit(self, X_train, y_train):
self.probability_features = {}
self.probability_target = {}
target_variable = "target"
df = X_train.copy()
df[target_variable] = y_train
# Copiez votre code de la leçon précédente
# Ajoutez self. à probability_features et probability_target
def predict(self, X_test):
passToutes les leçons de Introduction à l’apprentissage automatique
1Le début du parcours en ML
Introduction au MLLes données à fournir à un modèleQu’est-ce qu’un modèle de ML ?Entraînez-vous par vous-même : Compilateur Python en ligne