경기도미래기술학교 AI개발자 부트캠프 41일차 TIL- 베이즈 정리 복습의 복습.

2023. 7. 5. 15:52python

반응형

 

약간 킹벽하게 정리가 된 부분이다.

이번에는 문제가 눈앞에 단지가 하나 있고(X 혹은 Y), 단지 X에는 흰공 9개, 검은 공 1개.

단지 Y에는 흰공 두 개와 검은 공 여덟개다.

 

Prior, likelihood, joint, posterior를 각각 구하는 것이었다.

 

Prior : 잘 모를 때의 확률. X혹은 Y단지일테니까 엄대엄이

다. 5:5

likelihood : X가 흰색일 확률, X가 Y의 확률. Y가 흰색일 확률, Y가 검은색일 확률을 각각 구하는 것이다. 우리가 흔히 하는 확률 분류. 

 

joint : Prior와 likelihood를 곱한 값.

Posterior : 그 단지의 joint /선택한 공의 총 joint

를 구하면 된다.

 

# import pandas as pd
# def update_bayesian_table(table, likelihood):
#     table['likelihood'] = likelihood
#     table['unnorm'] = table['prior'] * table['likelihood']
#
#     norm_const = table['unnorm'].sum()
#     table['posterior'] = table['unnorm'] / norm_const
#
#     return table
#
# table = pd.DataFrame(index = ['X_Jar', 'Y_Jar'])
# table['prior'] = 0.5, 0.5
#
# #검정공
# table = update_bayesian_table(table, likelihood= [0.05, 0.4])
# print('검정공')
# print(table)
#
# print()
# print('------------------------')
#
# #흰공
# table = update_bayesian_table(table, likelihood= [0.45, 0.1])
# print('흰공')
# print(table)

이게 초기 코드. 그리고 계속 공을 뽑았을 때의 확률이다.

2번문제.

공을 두 번 뽑았을 때 , B B였다면 X,Y의 확률?

공을 두 번 뽑았을 때 , B Y였다면 X,Y의 확률?

 

3번문제. 검은 공이 두번 뽑히고 이번엔 흰공이 뽑혔을 때, Y 단지일 확률?

 

import pandas as pd
def update_bayesian_table(table, likelihood):
    table['likelihood'] = likelihood
    table['unnorm'] = table['prior'] * table['likelihood']

    norm_const = table['unnorm'].sum()
    table['posterior'] = table['unnorm'] / norm_const

    return table

table = pd.DataFrame(index = ['X_Jar', 'Y_Jar'])
table['prior'] = 0.5, 0.5

#검정공
table = update_bayesian_table(table, likelihood= [0.05, 0.4])
print('검정공')
print(table)

print()
print('------------------------')

#흰공
table = update_bayesian_table(table, likelihood= [0.45, 0.1])
print('흰공')
print(table)


print('2nd')
print('------------------------')
table['prior'] = 0.111111, 0.888889

#2nd 검정공
table = update_bayesian_table(table, likelihood= [0.05, 0.4])
print('검정공')
print(table)

print()
print('------------------------')

#2nd 흰공
table = update_bayesian_table(table, likelihood= [0.45, 0.1])
print('흰공')
print(table)

print()
print('------------------------')
print('3nd')
table['prior'] = 0.015385, 0.984615

table = update_bayesian_table(table, likelihood= [0.45, 0.1])
print('흰공')
print(table)
728x90