Menu
CoddyTech

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 :
 

temperaturemoodmotivationwindy
lowhappyhighyes

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.

challenge icon

Défi

Moyen

Dans 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):
        pass

Toutes les leçons de Introduction à l’apprentissage automatique

Entraînez-vous par vous-même : Compilateur Python en ligne