Menu
CoddyTech

method predict

Pelajaran 14 dari 19 dalam kursus Pengantar Machine Learning di Coddy.

challenge icon

Tantangan

Mudah

predict menetapkan (atau memprediksi) class untuk titik data baru menggunakan rumus berikut:
 

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

Pada pelajaran sebelumnya, kita menulis get_classes_probability.

Sekarang, dalam method predict, kita perlu mengembalikan output dari get_classes_probability untuk titik data baru.

Coba sendiri

class NaiveBayes:
    def __init__(self):
        pass
    
    def get_classes_probability(self, X):
        # X holds a dataframe with a single row
        # use self.classes that was saved in fit method
        # write your code below
        classes_probabilities = {}
        for cls in self.classes:
            classes_probabilities[cls] = 1
            for column in X.columns:
                for distinct_value in X[column].unique():
                    classes_probabilities[cls] *= self.probability_features[column][distinct_value][cls]
            classes_probabilities[cls] *= self.probability_target[cls]
        # --------------------------
        return classes_probabilities
    
    def fit(self, X_train, y_train):
        self.probability_features = {}
        self.probability_target = {}
        self.classes = y_train.unique()
        target_variable = "target"
        df = X_train.copy()
        df[target_variable] = y_train
        # Copy your code from previous lesson
        # Don't forget to Add self. to probability_features and probability_target
        distinct_target_values = df[target_variable].unique()
        for column in df.columns:
            if column == target_variable:
                continue
            self.probability_features[column] = {}
            distinct_values = df[column].unique()
            for value in distinct_values:
                self.probability_features[column][value] = {}
                for target_value in distinct_target_values: 
                    total = len(df[(df[column] == value) & (df[target_variable] == target_value)][target_variable])
                    count = len(df[(df[column] == value)])
                    self.probability_features[column][value][target_value] = total / count

        for target_value in distinct_target_values: 
            total = len(df[(df[target_variable] == target_value)][target_variable])
            self.probability_target[target_value] = total / len(df[target_variable])

        
    
    def predict(self, X_test):
        pass

Semua pelajaran di Pengantar Machine Learning

Latihan sendiri: Compiler Python online