베이즈 정리는 두 확률 변수의 사전 확률과 사후 확률사이의 관계를 나타내는 정리이다. 뭔 개소리임? ㅈㅅ 나도 이해를 못했음. 사전 확률(기존 믿음)과 새로운 정보(증거)를 결합하여 사후 확률(갱신된 믿음)을 계산하는 확률론적 방법이라고 하는데 이것도 확 와닿는 얘기는 아니었습니다.
이거 공식은 되게 심플... 할수도 있고 아닐수도 있음.

공식이 이게 다인데 보통 P(B)는 안준다. 그래서 저걸 또 전확률의 정리? 그걸 써서 구해야된다. 근데 저 바는 뭔데요? 조건부확률(P(A|B) = 어떤 사건(B)이 이미 일어났다는 전제 하에, 다른 사건(A)이 일어날 확률)이다. 그 생선님이 유튜브에 올린거 보면 비유를 개찰떡으로 해놨는데 봅시다.
어떤 게임의 가챠 확률표에서 SSR 확률이 0.001%이고 SSR 캐릭터가 다섯일 때 전체 캐릭터 풀에서 내가 원하는 SSR이 나올 확률하고 SSR을 뽑았을 때 내가 원하는 SSR이 나올 확률하고 다르잖아요. 전체 확률에서 내가 원하는 쓰알을 뽑을라면 0.001에 1/5을 곱해야되지만 이미 쓰알을 뽑았을때는 쓰알들 '중에서' 하나 내가 원하는거 딱 나오면 되니까 1/5지.
비슷하게 소드실드 5성 2% 미로치 확정굴도 '5성이 떴을때' 2%인 조건부확률이다. 그래서 실제 확률은 진짜 낮기때문에 날짜를 돌려가면서 그 개노가다를 하는 것이다. 시드 계산인가 있지 않냐고? 이벤굴은 그거 안된다.
# 베이즈 정리: 어떤 사건이 서로 배반하는 원인 둘에 의해 일어난다고 할 때 실제 사건이 일어났을 때 이것이 두 원인 중 하나일 확률을 구하는 정리
# 공식: P(A|B) = P(B|A) * P(A) / P(B)
# P(A): 사전확률
# P(B): 주변 우도(marginal likelihood)
# P(A|B): B의 값이 주어졌을 때 A의 사후 확률(여기서 구해야 하는 거))
# P(B|A): A가 주어졌을 때 B의 조건부 확률
# P(B|not A): A가 주어지지 않았을 때 B의 조건부 확률
# 함수 매개변수: P(A), P(B|A), P(B|not A) 순서대로 입력해주세요
def bayes_theorem(prior, sensitivity, false_positive):
# P(B)
# P(B) = P(B|A) * P(A) + P(B|not A) * P(not A) (전확률의 정리인가 있음 아무튼)
marginal_likelihood = (prior * sensitivity) + ((1 - prior) * false_positive) # P(B)를 계산해야 함
# P(A|B)
# P(A|B) = P(B|A) * P(A) / P(B) (위에 공식 써있음)
posterior = (prior * sensitivity) / marginal_likelihood
return posterior
result = bayes_theorem(0.01, 0.95, 0.05)
print(f"P(A|B): {result:.2%}")
그래서 이게 전체 코드인데... 나는 텍스트 ''로 쓰는데 제미나이는 ""로 쓰데...? 안티그래비티 자동완성도 그렇고...
'Coding > Python' 카테고리의 다른 글
| 데이터프레임의 정보를 확인하는 몇 가지 방법 (0) | 2026.01.08 |
|---|---|
| 폐암 데이터를 분석해서 생존률을 비교해보자 (0) | 2026.01.07 |
| 인플루엔자의 해마글루티닌 게놈을 받아서 MSA를 해보자 (0) | 2026.01.05 |
| 한타바이러스의 시퀀스를 받아서 MSA를 해보자 (후편) (0) | 2026.01.05 |
| 한타바이러스의 시퀀스를 받아서 MSA를 해보자 (전편) (0) | 2026.01.02 |