Menu
CoddyTech

fit 메서드

Coddy의 머신 러닝 입문 코스 레슨. 19개 중 13번째.

나이브 베이즈 공식은 다음과 같습니다:
<strong>P(Class|Feature) = P(Feature|Class) * P(Class) / P(Feature)</strong>

이전 레슨에서 <strong>P(Feature|Class)</strong>와 <strong>P(Class)</strong>를 이미 계산했습니다.

이제 수학적 원리에 따라 P(Feature)를 생략하여 계산을 단순화할 수 있습니다. 예를 들어, 5 > 3일 때 양변을 10으로 나누어도(5/10 > 3/10), 부등식은 여전히 성립합니다.

따라서 단순화된 공식은 다음과 같습니다: P(Class|Feature) = P(Feature|Class) * P(Class).

다음과 같은 속성을 가진 새로운 데이터 포인트를 고려해 보겠습니다:
 

temperaturemoodmotivationwindy
lowhappyhighyes

play = yes인 모든 인스턴스에 대해 계산하려면 다음 공식을 사용하세요:

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)

이 모든 데이터는 이미 probability_features와 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"]

이제 play = no에 대해서도 동일한 작업을 수행해야 합니다.

두 확률을 구한 후, 이를 비교하여 더 큰 값을 결정합니다.

p_yes가 p_no보다 크면 이 새로운 데이터 포인트를 yes로 분류하고, 그렇지 않으면 no로 분류합니다.

challenge icon

챌린지

중급

이 챌린지에서는 이전 레슨에서 했던 것과 마찬가지로 self.probability_features와 self.probability_target에 확률을 저장하도록 fit 메서드를 완성하세요.

y_train은 타겟 변수이고, X_train은 피처 데이터셋입니다.

또한, get_classes_probability 메서드를 완성하세요. 이 메서드는 (앞서 제공된 예시와 유사한) 새로운 데이터 포인트를 인자로 받아 타겟 변수의 각 클래스에 대한 확률(p_yes 및 p_no)을 반환해야 합니다.
출력은 다음과 같은 형식이어야 합니다 (타겟 변수 y_train의 값에 따라 달라짐).

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

피처 이름과 속성 이름은 고정되어 있지 않다는 점에 유의하세요. 각 데이터셋마다 서로 다른 피처와 이름을 가지고 있습니다.

직접 해보기

class NaiveBayes:
    class __init__(self):
        pass
    
    def get_classes_probability(self, X):
        # X는 단일 행을 가진 데이터프레임을 보유합니다
        # fit 메서드에 저장된 self.classes를 사용하세요
        # 아래에 코드를 작성하세요
        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
        # 이전 레슨에서 작성한 코드를 복사하세요
        # probability_features와 probability_target에 self.를 추가하세요
        
    
    def predict(self, X_test):
        pass

머신 러닝 입문의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러