확률밀도함수와 확률질량함수를 통칭하여 확률함수 : 확률함수를 아는 것은 확률분포를 아는 것과 같음
- $X\sim B(n,p)$
scipy.stats
의binom
모듈: 사용법
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from scipy.stats import binom
# 이항분포 B(n,p)파라미터 설정
p = 0.3
n = 100
# 이항분포 정의
dist1 = binom(n,p)
# 이항분포 확률질량함수 dist1.pmf
Xlist = range(10,50)
Ylist = dist1.pmf(Xlist)
plt.plot(Xlist, Ylist)
# 이항분포의 CDF: dist1.cdf
for n in range(10,100,10):
print(f'{n}번 이하 성공할 확률:{dist1.cdf(n)*100:0.3f}')
# m:mean (평균), v:variance(분산), s:skewness(왜도), k:kurtosis(첨도)
m,v,s,k = dist1.stats(moments='mvsk')
print(f'X가 B(100,0.3)를 따를 때, 평균:{m}, 분산:{v}, 왜도:{s}, 첨도:{k}')
- $X\sim N(\mu,\sigma^2)$
scipy.stats
의norm
모듈 : 사용법
from scipy.stats import norm
mu = 50
sigma = 5
dist2 = norm(mu,sigma)
# 정규분포의 확률밀도함수
Xlist = range(20,80)
Ylist = dist2.pdf(Xlist)
plt.plot(Xlist, Ylist)
dist2.pdf(50)
# 정규분포의 CDF
print(f'P(40<=X<=60)={dist2.cdf(60)-dist2.cdf(40):5.2f}')
# m:mean (평균), v:variance(분산), s:skewness(왜도), k:kurtosis(첨도)
m,v,s,k = dist2.stats(moments='mvsk')
print(f'X가 N(50,25)를 따를 때, 평균:{m}, 분산:{v}, 왜도:{s}, 첨도:{k}')
from scipy.stats import multivariate_normal
#다변량 정규분포 분산 값 변화에 따른 그래프 모형
x, y = np.mgrid[-1:1:0.01, -1:1:.01]
pos = np.dstack((x, y))
rv1 = multivariate_normal(mean=[0, 0], cov=[[0.1, 0],[0, 0.1]])
rv2 = multivariate_normal(mean=[0, 0], cov=[[1, 0],[0, 1]])
rv3 = multivariate_normal(mean=[0, 0], cov=[[2, 0],[0, 1]])
rv4 = multivariate_normal(mean=[0, 0], cov=[[1, 0],[0, 2]])
rv5 = multivariate_normal(mean=[0, 0], cov=[[1, 0.5],[0.5, 1]])
rv6 = multivariate_normal(mean=[0, 0], cov=[[1, -0.5],[-0.5, 1]])
fig, subplots = plt.subplots(2, 3)
fig.set_figwidth(12)
fig.set_figheight(8)
subplots = subplots.reshape(-1)
subplots[0].contourf(x, y, rv1.pdf(pos), cmap='magma')
subplots[1].contourf(x, y, rv2.pdf(pos), cmap='magma')
subplots[2].contourf(x, y, rv3.pdf(pos), cmap='magma')
subplots[3].contourf(x, y, rv4.pdf(pos), cmap='magma')
subplots[4].contourf(x, y, rv5.pdf(pos), cmap='magma')
subplots[5].contourf(x, y, rv6.pdf(pos), cmap='magma')
subplots[0].set_title('mean=0 cov=[[0.1, 0],[0, 0.1]]')
subplots[1].set_title('mean=0 cov=[[1, 0],[0, 1]]')
subplots[2].set_title('mean=0 cov=[[2, 0],[0, 1]]')
subplots[3].set_title('mean=0 cov=[[1, 0],[0, 2]]')
subplots[4].set_title('mean=0 cov=[[1, 0.5],[0.5, 1]]')
subplots[5].set_title('mean=0 cov=[[1, -0.5],[-0.5, 1]]')
Reference:
기계학습_하길찬 교수님 수업을 바탕으로 공부한 자료입니다.
네이버 수학 용어 정의