- Matplotlib으로 정규분포를 그려보자2024년 07월 16일
- Lv. 34 라이츄
- 작성자
- 2024.07.16.:00
R에서 그래프 그릴 때 가끔 예제로 나오는게 정규분포다. 그 종같이 생긴 그거 말하는 거 맞습니다. 그래서 이걸 Matplotlib으로 그려봅시다.
Reference
https://bigdata-doctrine.tistory.com/14
그 전에 Matplotlib으로 그래프 그리는 걸 하셨으면 Matplotlib랑 Numpy, Pandas는 설치하셨을텐데 오늘은 Scipy도 같이 설치해야 한다. 네, 깔고 오십시오. pip install ~ 쓰면 깔릴거임.
import numpy as np import matplotlib.pyplot as plot from scipy.stats import norm
가져왔으면 이제 시작해보자. 세번째줄은 scipy의 모듈인데 아마 여기에 정규분포가 있는 듯 하다.
x = np.arange(0,20,0.001) plot.figure(figsize=(10,7.5)) plot.title('Normal distribution') plot.xlabel('x') plot.ylabel('f(x)') plot.plot(x, norm.pdf(x, loc=10, scale=2)) plot.show()
이렇게 하면 어떻게 나오냐면
이렇게 나온다. 이게 흔히 말하는 정규분포. 어? 이상하다? 정규분포 해갖고 가운데에 0 있는건 뭐예요? 그건 표준정규분포다. 얘는 평균이 10, 표준편차가 2인 정규분포.
위 코드만 입력하면 이렇게 정규분포가 나오는데... plot.어쩌고 된 건 다 matplotlob 관련인 거 알겠는데 첫 줄은 뭔가요? 그건 numpy를 이용해서 0부터 20까지 0.001간격으로 배열 형식으로 저장하라는 코드다. 그 다음으로 중요한 건 norm.pdf(x, loc=10, scale=2) 이 부분인데 이게 바로 '평균이 10, 표준편차가 2인 정규분포를 그려라'라는 얘기다. loc가 평균, scale이 표준편차. 그럼 표준정규분포를 그리려면 어디를 수정해야 하는 지 감이 좀 오시쥬?
x = np.arange(-4,4,0.001) plot.figure(figsize=(10,7.5)) plot.title('Normal distribution') plot.xlabel('x') plot.ylabel('f(x)') plot.plot(x, norm.pdf(x, loc=0, scale=1)) plot.show()
일단 위 코드랑 다른 점이 두 개 있다. 첫번째는 평균이랑 표준편차가 각각 0, 1이고 두번째는 x로 만드는 배열의 숫자 범위가 다르다. 처음에는 0부터 20까지였는데(평균이 10이라…) 표준정규분포는 -4부터 4까지 있다. 범위가 중요한가요? 예, 중요합니다. 범위를 그대로 0부터 20까지로 하면 어떻게 되냐면
타노스가 왔다갔나 반만 나온다.
착한 코더 여러분들은 얘는 '표준'정규분포니까 plot.title()에 Standard Normal distribution이라고 적어주는 센스를 잊지 말자.
'Coding > Python' 카테고리의 다른 글
Matplotlib으로 그래프를 그려보자 (2) (0) 2024.06.05 Matplotlib으로 그래프를 그려보자 (0) 2024.06.03 배수 판별을 해보자 (0) 2024.04.10 구구단을 이차원 배열로 출력해보자 (0) 2024.03.12 현재 시각을 십이지시로 바꿔보자 (0) 2024.01.10 다음글이전글이전 글이 없습니다.댓글