Menu
CoddyTech

método fit

Lección 13 de 19 del curso Introducción al aprendizaje automático de Coddy.

Aquí está la fórmula de Naive Bayes:
<strong>P(Class|Feature) = P(Feature|Class) * P(Class) / P(Feature)</strong>

Ya calculamos <strong>P(Feature|Class)</strong> y <strong>P(Class)</strong> en la lección anterior.

Ahora, basándonos en principios matemáticos, podemos simplificar nuestros cálculos omitiendo P(Feature). Por ejemplo, si 5 > 3 y dividimos ambos lados por 10 (para obtener 5/10 > 3/10), la desigualdad sigue siendo cierta.

Por lo tanto, nuestra fórmula simplificada se convierte en: P(Class|Feature) = P(Feature|Class) * P(Class).

Considera un nuevo punto de datos con los siguientes atributos:
 

temperaturemoodmotivationwindy
lowhappyhighyes

Para calcular todas las instancias donde play = yes, usa la fórmula:

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)

Todos estos datos ya están guardados en nuestras variables probability_features y 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"]

Ahora necesitamos hacer lo mismo para play = no.

Después de obtener ambas probabilidades, las comparamos para determinar cuál es la mayor.

Si p_yes es mayor que p_no, clasificamos este nuevo punto de datos como yes; de lo contrario, lo clasificamos como no.

challenge icon

Desafío

Intermedio

En este desafío, completa el método fit para que almacene las probabilidades en self.probability_features y self.probability_target, tal como lo hicimos en la lección anterior.

y_train es nuestra variable objetivo, y X_train es nuestro conjunto de datos de características.

Además, completa el método get_classes_probability. Este método debe tomar un nuevo punto de datos (similar al ejemplo proporcionado anteriormente) y devolver las probabilidades para cada clase de la variable objetivo (el p_yes y p_no).
La salida debe tener el siguiente formato (dependiendo de los valores en la variable objetivo y_train)

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

Ten en cuenta que los nombres de las características y los nombres de los atributos no son constantes. Cada conjunto de datos tiene diferentes características y diferentes nombres.

Pruébalo tú mismo

class NaiveBayes:
    class __init__(self):
        pass
    
    def get_classes_probability(self, X):
        # X contiene un dataframe con una sola fila
        # usa self.classes que se guardó en el método fit
        # escribe tu código a continuación
        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 tu código de la lección anterior
        # Añade self. a probability_features y probability_target
        
    
    def predict(self, X_test):
        pass

Todas las lecciones de Introducción al aprendizaje automático

Practica por tu cuenta: Compilador de Python online