일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 암호화폐투자
- programmers
- 회원가입
- 프로그래머스
- python
- 백준
- spring boot
- java
- 자바
- 지브리필터
- ai이미지변환
- Gem
- modern c++
- coins
- finance & economics
- Baekjoon
- 비트코인
- Computer Science
- Digital Marketing
- Cars
- Spring JPA
- SECS
- Spring
- C++
- c
- CS
- 파이썬
- Investing
- SECS/GEM
- SECS-II
Archives
- Today
- Total
비버놀로지
[나이브 베이즈 분류] 나이브 베이즈 분류기 본문
반응형
나이브 베이즈 분류기
나이브 베이즈 분류기를 직접 구현해 보겠습니다. 두 개의 사탕 기계를 살펴보겠습니다.
- 첫 번째 기계 M1M_1 : {θred=0.7,θgreen=0.2,θblue=0.1}
- 두 번째 기계 M2M_2 : {θred=0.3,θgreen=0.4,θblue=0.3}
두 기계에서 사탕을 뽑을 확률은 다음과 같습니다.
- p(M1)=0.7
- p(M2)=0.3
다음과 같이 10개의 사탕을 뽑았을 때 이 사탕들이 몇 번째 기계에서 나왔을지 확률로 표현해보는 코드를 작성해보겠습니다.
- red - 4
- green - 3
- blue - 3
이 확률은 p(Mk∣x), k∈{1,2} 로 나타낼 수 있습니다. 나이브 법칙을 적용하면

가 됩니다. 이때 두 기계의 p(x) 는 같으므로 무시하겠습니다.
p(M1) 와 p(M2) 의 상대적인 확률은 다음과 같습니다.
p(M1∣x)∝p(M1)p(x∣M1)
=1.345×10−6
p(M2∣x)∝p(M2)p(x∣M2)
=0.3×(0.34×0.43×0.33)
=4.199×10−6
두 번째 기계에서 뽑혔을 확률이 훨씬 더 높은 것을 알 수 있습니다. 두 확률을 표준화(Normalize)하면 다음과 같습니다.
(1.345×10−6,4.199×10−6)
→(0.243,0.757)
즉 나이브 베이즈 분류기를 사용했을 때 10개의 사탕이 두번째 기계에서 뽑혔을 확률은 75.7%입니다.
실습
위의 설명을 읽고, naive_bayes() 함수를 직접 구현해보세요.
이 함수는 두 개의 원소로 이루어진 리스트 하나를 출력합니다. 첫번째 원소는 P(M1∣test), 두 번째 숫자는 P(M2∣test)의 표준화된 값입니다. 즉, 두 값을 합은 1이 되어야 합니다.
import re
import math
import numpy as np
def main():
M1 = {'r': 0.7, 'g': 0.2, 'b': 0.1} # M1 기계의 사탕 비율
M2 = {'r': 0.3, 'g': 0.4, 'b': 0.3} # M2 기계의 사탕 비율
test = {'r': 4, 'g': 3, 'b': 3}
print(naive_bayes(M1, M2, test, 0.7, 0.3))
def naive_bayes(M1, M2, test, M1_prior, M2_prior):
R1 = M1['r']**test['r']*M1['g']**test['g']*M1['b']**test['b']*M1_prior
R2 = M2['r']**test['r']*M2['g']**test['g']*M2['b']**test['b']*M2_prior
R1,R2 = R1/(R1+R2), R2/(R1+R2)
return [R1,R2]
if __name__ == "__main__":
main()
반응형
'인공지능 머신러닝' 카테고리의 다른 글
[나이브 베이즈 분류] 네이버 영화평 감정분석 (0) | 2022.11.03 |
---|---|
[나이브 베이즈 분류] Bag of Words (0) | 2022.11.03 |
[나이브 베이즈 분류] 유방암 검사 키트 (0) | 2022.11.03 |
[나이브 베이즈 분류] 확률로 pi 계산하기 (0) | 2022.11.03 |
[회귀분석] 영어 단어 코퍼스 분석하기 (0) | 2022.11.03 |
Comments