Menu
CoddyTech

fit yöntemi

Coddy'nin Makine Öğrenmesine Giriş kursunda ders 13 / 19.

İşte Naive Bayes formülü:
<strong>P(Class|Feature) = P(Feature|Class) * P(Class) / P(Feature)</strong>

Önceki derste <strong>P(Feature|Class)</strong> ve <strong>P(Class)</strong> değerlerini zaten hesaplamıştık.

Şimdi, matematiksel ilkelere dayanarak, P(Feature) değerini çıkararak hesaplamalarımızı basitleştirebiliriz. Örneğin, eğer 5 > 3 ise ve her iki tarafı 10'a bölersek (5/10 > 3/10 elde etmek için), eşitsizlik doğru kalmaya devam eder.

Bu nedenle, basitleştirilmiş formülümüz şu hale gelir: P(Class|Feature) = P(Feature|Class) * P(Class).

Aşağıdaki özniteliklere sahip yeni bir veri noktasını ele alalım:
 

temperaturemoodmotivationwindy
lowhappyhighyes

play = yes olan tüm durumlar için hesaplama yapmak için şu formülü kullanın:

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)

Tüm bu veriler probability_features ve probability_target değişkenlerimizde zaten kayıtlıdır:

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

Şimdi aynı şeyi play = no için yapmamız gerekiyor.

Her iki olasılığı da elde ettikten sonra, hangisinin daha büyük olduğunu belirlemek için bunları karşılaştırırız.

Eğer p_yes değeri p_no değerinden büyükse, bu yeni veri noktasını yes olarak sınıflandırırız; aksi takdirde no olarak sınıflandırırız.

challenge icon

Görev

Orta

Bu görevde, fit metodunu, olasılıkları önceki derste yaptığımız gibi self.probability_features ve self.probability_target içinde saklayacak şekilde tamamlayın.

y_train hedef değişkenimizdir ve X_train özelliklerden oluşan veri setimizdir.

Ayrıca, get_classes_probability metodunu tamamlayın. Bu metod, yeni bir veri noktası (daha önce verilen örneğe benzer şekilde) almalı ve hedef değişkenin her bir sınıfı için olasılıkları (p_yes ve p_no) döndürmelidir.
Çıktı şu formatta olmalıdır (hedef değişken y_train içindeki değerlere bağlı olarak):

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

Özellik adlarının ve öznitelik adlarının sabit olmadığını unutmayın. Her veri setinin farklı özellikleri ve farklı adları vardır.

Kendin dene

class NaiveBayes:
    class __init__(self):
        pass
    
    def get_classes_probability(self, X):
        # X tek bir satır içeren bir dataframe tutar
        # fit metodunda kaydedilen self.classes yapısını kullanın
        # kodunuzu aşağıya yazı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
        # Önceki dersteki kodunuzu kopyalayın
        # probability_features ve probability_target değişkenlerine self. ekleyin
        
    
    def predict(self, X_test):
        pass

Makine Öğrenmesine Giriş bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi