나이브 베이즈 분류
데이터의 혹률적 속성을 가지고 클래스를 판단하는, 꽤 높은 성능을 가지는 머신러닝 알고리즘
import numpy as np
def bayes_theorem():
# 1. P(“스팸 메일”) 의 확률을 구하세요.
p_spam = 8/20
# 2. P(“확인” | “스팸 메일”) 의 확률을 구하세요.
p_confirm_spam = 5/8
# 3. P(“정상 메일”) 의 확률을 구하세요.
p_ham = 12/20
# 4. P(“확인” | "정상 메일" ) 의 확률을 구하세요.
p_confirm_ham = 2/12
# 5. P( "스팸 메일" | "확인" ) 의 확률을 구하세요.
p_spam_confirm = p_confirm_spam * p_spam / (7/20)
# 6. P( "정상 메일" | "확인" ) 의 확률을 구하세요.
p_ham_confirm = p_confirm_ham * p_ham / (7/20)
return p_spam_confirm, p_ham_confirm
def main():
p_spam_confirm, p_ham_confirm = bayes_theorem()
print("P(spam|confirm) = ",p_spam_confirm, "\nP(ham|confirm) = ",p_ham_confirm, "\n")
# 두 값을 비교하여 확인 키워드가 스팸에 가까운지 정상 메일에 가까운지 확인합니다.
value = [p_spam_confirm, p_ham_confirm]
if p_spam_confirm > p_ham_confirm:
print( round(value[0] * 100, 2), "% 의 확률로 스팸 메일에 가깝습니다.")
else :
print( round(value[1] * 100, 2), "% 의 확률로 일반 메일에 가깝습니다.")
if __name__ == "__main__":
main()
출처: 앨리스 교육
반응형