Menu
CoddyTech

method fit

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

Berikut rumus Naive Bayes:
<strong>P(Class|Feature) = P(Feature|Class) * P(Class) / P(Feature)</strong>

Kita sudah menghitung <strong>P(Feature|Class)</strong> dan <strong>P(Class)</strong> di pelajaran sebelumnya.

Sekarang, berdasarkan prinsip matematika, kita bisa menyederhanakan perhitungan dengan menghilangkan P(Feature). Misalnya, jika 5 > 3 dan kita membagi kedua sisi dengan 10 (untuk memperoleh 5/10 > 3/10), pertidaksamaannya tetap benar.

Karena itu, rumus sederhana kita menjadi: P(Class|Feature) = P(Feature|Class) * P(Class).

Pertimbangkan titik data baru dengan atribut berikut:
 

temperaturemoodmotivationwindy
lowhappyhighyes

Untuk menghitung semua instance dengan play = yes, gunakan rumus:

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)

Semua data ini sudah tersimpan dalam variabel probability_features dan 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"]

Sekarang kita perlu melakukan hal yang sama untuk play = no.

Setelah mendapatkan kedua probabilitas, kita membandingkannya untuk menentukan nilai yang lebih besar.

Jika p_yes lebih besar daripada p_no, kita mengklasifikasikan titik data baru ini sebagai yes; jika tidak, kita mengklasifikasikannya sebagai no.

challenge icon

Tantangan

Sedang

Dalam tantangan ini, lengkapi method fit agar menyimpan probabilitas di self.probability_features dan self.probability_target, seperti yang kita lakukan di pelajaran sebelumnya.

y_train adalah variabel target kita, dan X_train adalah dataset fitur kita.

Lengkapi juga method get_classes_probability. Method ini harus menerima titik data baru (mirip dengan contoh yang diberikan sebelumnya) dan mengembalikan probabilitas untuk setiap class dari variabel target (p_yes dan p_no).
Output harus menggunakan format berikut (bergantung pada nilai dalam variabel target y_train)

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

Ingat bahwa nama fitur dan nama atribut tidak tetap. Setiap dataset memiliki fitur dan nama yang berbeda.

Coba sendiri

class NaiveBayes:
    class __init__(self):
        pass
    
    def get_classes_probability(self, X):
        # X berisi dataframe dengan satu baris
        # gunakan self.classes yang disimpan dalam method fit
        # tulis kodemu di bawah ini
        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
        # Salin kodemu dari pelajaran sebelumnya
        # Tambahkan self. pada probability_features dan probability_target
        
    
    def predict(self, X_test):
        pass

Semua pelajaran di Pengantar Machine Learning

Latihan sendiri: Compiler Python online