Menu
Coddy logo textTech

Metodo fit

Lezione 13 di 19 del corso Introduzione all’apprendimento automatico di Coddy.

Ecco la formula di Naive Bayes:
<strong>P(Class|Feature) = P(Feature|Class) * P(Class) / P(Feature)</strong>

Abbiamo già calcolato <strong>P(Feature|Class)</strong> e <strong>P(Class)</strong> nella lezione precedente.

Ora, sulla base dei principi matematici, possiamo semplificare i calcoli omettendo P(Feature). Per esempio, se 5 > 3 e dividiamo entrambi i membri per 10 (per ottenere 5/10 > 3/10), la disuguaglianza rimane vera.

Quindi, la formula semplificata diventa: P(Class|Feature) = P(Feature|Class) * P(Class).

Considera un nuovo punto dati con i seguenti attributi:
 

temperaturaumoremotivazioneventoso
bassafelicealtasì

Per calcolare tutti i casi in cui play = yes, usa la formula:

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)

Tutti questi dati sono già salvati nelle variabili probability_features e 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"]

Ora dobbiamo fare la stessa cosa per play = no.

Dopo aver ottenuto entrambe le probabilità, le confrontiamo per determinare quale sia maggiore.

Se p_yes è maggiore di p_no, classifichiamo questo nuovo punto dati come yes; altrimenti, lo classifichiamo come no.

challenge icon

Sfida

Medio

In questa sfida, completa il metodo fit in modo che memorizzi le probabilità in self.probability_features e self.probability_target, proprio come abbiamo fatto nella lezione precedente.

y_train è la nostra variabile target e X_train è il nostro insieme di dati delle caratteristiche.

Inoltre, completa il metodo get_classes_probability. Questo metodo deve ricevere un nuovo punto dati (simile all'esempio fornito in precedenza) e restituire le probabilità per ciascuna classe della variabile target (la p_yes e la p_no).
L'output deve essere nel seguente formato (a seconda dei valori nella variabile target y_train)

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

Tieni presente che i nomi delle caratteristiche e degli attributi non sono costanti. Ogni insieme di dati ha caratteristiche e nomi diversi.

Provalo tu

class NaiveBayes:
    class __init__(self):
        pass
    
    def get_classes_probability(self, X):
        # X contiene un dataframe con una sola riga
        # usa self.classes, salvato nel metodo fit
        # scrivi il tuo codice qui sotto
        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
        # Copia il tuo codice dalla lezione precedente
        # Aggiungi self. a probability_features e probability_target
        
    
    def predict(self, X_test):
        pass

Tutte le lezioni di Introduzione all’apprendimento automatico

Esercitati da solo: Compilatore Python online