Scipy

1 minute read

Scipy

본글은 데이터 사이언스 스쿨에서 Scipy에 대한 글을 그대로 옮기고 실습한 과정입니다.

Scipy는 수치해석기능을 제공하는 파이썬 패키지이다.
여러 서브패키지로 구성되어 있는데 그중 stats 서브 패키지는 확률분포 분석을 위한 다양한 기능을 제공한다.
Scipy, Scipy.stats는 아래와 같은 code로서 import하여 사용할 수 있다.

1
2
import scipy as sp
import scipy.stats as stats

확률분포 클래스

SciPy에서 확률분포 기능을 사용하려면 확률분포 클래스 객체를 생성한 수 이 객체의 메서드를 호출하여야 한다.
확률분포 객체를 생성하는 명령에는 다음과 같은 것들이 있다.

종류 이름 확률분포
이산 bernoulli 베르누이분포
이산 binom 이항분포
이산 multinomial 다항분포
연속 uniform 균일분포
연속 norm 정규분포
연속 beta 베타분포
연속 gamma 감마분포
연속 t 스튜던트 t분포
연속 chi2 카이 제곱분포
연속 f F분포
연속 dirichlet 디리클리분포
연속 multivariate_normal 다변수 정규분포


모수지정

확률 분포 객체를 생성할 때는 분포의 형상을 구체적으로 지정하는 모수를 인수로 지정해야 한다.
모수적인 공통은 아래와 같다.

인수 의미
loc 일반적으로 분포의 기댓값
scale 일반적으로 분포의 표준편차

확률분포 메서드

확률분포 객체가 가지는 메서드는 다음과 같다.

메서드 기능
pmf 확률질량함수(probability mass function)
pdf 확률밀도함수(probability density function)
cdf 누적분포함수(cumulative distribution function)
ppf 누적분포함수의 역함수(inverse cumulative distribution function)
sf 생존함수(survival function) = 1 - 누적분포함수
isf 생존함수의 역함수(inverse survival function)
rvs 랜덤 표본 생성(random variable sampling)

확률 밀도 함수

1
2
3
4
5
6
7
8
#확률밀도 함수
xx = np.linspace(-8, 8, 100)
pdf = rv.pdf(xx)
plt.plot(xx, pdf)
plt.title("Probability density function")
plt.xlabel("$x$")
plt.ylabel("$p(x)$")
plt.show()


누적분포함수

1
2
3
4
5
6
7
8
#누적분포함수
xx = np.linspace(-8, 8, 100)
cdf = rv.cdf(xx)
plt.plot(xx, cdf)
plt.title("Cumulative distribution function")
plt.xlabel("$x$")
plt.ylabel("$F(x)$")
plt.show()


무작위 표본 생성

무작위로 표본을 만들 때는 rvs메서드를 사용한다.

  • size: 표본 생성 시 생성될 표본 크기
  • random_state: 표본 생성 시 사용되는 시드 값
1
2
#무작위 표본 생성
rv.rvs(size=(3, 5), random_state=0)
array([[ 4.52810469,  1.80031442,  2.95747597,  5.4817864 ,  4.73511598],
       [-0.95455576,  2.90017684,  0.69728558,  0.7935623 ,  1.821197  ],
       [ 1.28808714,  3.90854701,  2.52207545,  1.24335003,  1.88772647]])
1
2
3
4
5
6
7
#랜덤 표본 생성 결과
sns.distplot(rv.rvs(size=10000, random_state=0))
plt.title("Random sample generation result")
plt.xlabel("Sample Value")
plt.ylabel("count")
plt.xlim(-8, 8)
plt.show()



참조: 원본코드
참초:데이터 사이언스스쿨
코드에 문제가 있거나 궁금한 점이 있으면 wjddyd66@naver.com으로 Mail을 남겨주세요.

Leave a comment