Menu
CoddyTech

fit-Methode

Lektion 13 von 19 im Kurs Einführung in maschinelles Lernen von Coddy.

Hier ist die Naive-Bayes-Formel:
<strong>P(Class|Feature) = P(Feature|Class) * P(Class) / P(Feature)</strong>

Wir haben <strong>P(Feature|Class)</strong> und <strong>P(Class)</strong> bereits in der vorherigen Lektion berechnet.

Basierend auf mathematischen Prinzipien können wir unsere Berechnungen nun vereinfachen, indem wir P(Feature) weglassen. Wenn zum Beispiel 5 > 3 ist und wir beide Seiten durch 10 teilen (um 5/10 > 3/10 zu erhalten), bleibt die Ungleichung wahr.

Daher lautet unsere vereinfachte Formel: P(Class|Feature) = P(Feature|Class) * P(Class).

Betrachten Sie einen neuen Datenpunkt mit den folgenden Attributen:
 

temperaturemoodmotivationwindy
lowhappyhighyes

Um für alle Instanzen zu rechnen, bei denen play = yes gilt, verwenden Sie die Formel:

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)

Alle diese Daten sind bereits in unseren Variablen probability_features und probability_target gespeichert:

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"]

Jetzt müssen wir das Gleiche für play = no tun.

Nachdem wir beide Wahrscheinlichkeiten erhalten haben, vergleichen wir sie, um die größere zu ermitteln.

Wenn p_yes größer als p_no ist, klassifizieren wir diesen neuen Datenpunkt als yes; andernfalls klassifizieren wir ihn als no.

challenge icon

Aufgabe

Mittel

In dieser Challenge vervollständigst du die Methode fit so, dass sie die Wahrscheinlichkeiten in self.probability_features und self.probability_target speichert, genau wie wir es in der vorherigen Lektion getan haben.

y_train ist unsere Zielvariable und X_train ist unser Datensatz mit Merkmalen (Features).

Vervollständige außerdem die Methode get_classes_probability. Diese Methode sollte einen neuen Datenpunkt entgegennehmen (ähnlich wie im zuvor gezeigten Beispiel) und die Wahrscheinlichkeiten für jede Klasse der Zielvariablen zurückgeben (die p_yes und p_no).
Die Ausgabe sollte im folgenden Format erfolgen (abhängig von den Werten in der Zielvariablen y_train):

classes_probabilities = {
    "yes": 0.00,
    "no": 0.00, 
}

Beachte, dass die Merkmalsnamen und die Attributnamen nicht konstant sind. Jeder Datensatz hat unterschiedliche Merkmale und unterschiedliche Namen.

Probier es selbst

class NaiveBayes:
    class __init__(self):
        pass
    
    def get_classes_probability(self, X):
        # X enthält einen Dataframe mit einer einzelnen Zeile
        # Verwenden Sie self.classes, das in der fit-Methode gespeichert wurde
        # Schreiben Sie Ihren Code unten
        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
        # Kopieren Sie Ihren Code aus der vorherigen Lektion
        # Fügen Sie self. zu probability_features und probability_target hinzu
        
    
    def predict(self, X_test):
        pass

Alle Lektionen in Einführung in maschinelles Lernen

Übe selbstständig: Online-Python-Compiler