중간고사는 인터넷 없이 Jupyter Notebook 에서 봅니다. 검색은 못 하지만, 노트북이 직접 알려 주는 도움말은 쓸 수 있습니다.
셋 다 인터넷이 필요 없습니다. 설명은 컴퓨터에 설치된 패키지 안에 들어 있습니다.
06주차 · 대표적인 이산형 확률분포01
도움말은 지금 실행 중인 파이썬(커널)이 알고 있는 것만 보여 줍니다.
import numpy as np # 이 셀을 실행해야
from scipy import stats # np. 과 stats. 뒤에서 Tab 이 동작한다
scores = np.array([55, 60, 65, 62, 70]) # 실행해야 sc + Tab 에 scores 가 뜬다노트북을 새로 열었거나 커널을 다시 시작했다면 위에서부터 다시 실행합니다 (Shift + Enter).
06주차 · 대표적인 이산형 확률분포02
이름의 앞 몇 글자를 쓰고 Tab 을 누릅니다.
np.me ← 여기서 Tab
# 후보: mean median meshgrid ...
sc ← 여기서 Tab
# 후보가 하나뿐이면 바로 채워진다 → scores긴 변수 이름을 잘못 치는 실수(scroes)가 없어집니다. 오타로 나는 NameError 가 시험에서 가장 흔한 오류입니다.
IPython 문서 — Tab completion ipython.readthedocs.io/en/stable/interactive/tutorial.html
06주차 · 대표적인 이산형 확률분포03
점까지 쓰고 Tab 을 누르면 그 안에 든 함수 목록이 뜹니다. 이름을 몰라도 목록에서 찾을 수 있습니다.
| 이렇게 쓰고 Tab | 뜨는 것 (일부) |
|---|---|
| np. | mean, median, var, std, percentile, random ... |
| np.random. | choice, seed, randint ... |
| stats. | binom, geom, poisson, bernoulli ... |
| df['score']. | mean, median, mode, var, describe ... |
목록이 너무 길면 한두 글자를 더 쓰고 다시 Tab 을 누릅니다. np.per + Tab → percentile.
06주차 · 대표적인 이산형 확률분포04
함수 괄호 안에서 인자 이름의 앞글자를 쓰고 Tab 을 누르면 인자 이름이 뜹니다.
np.random.choice(nums, 3, re ← 여기서 Tab
# → replace=
np.random.choice(nums, 3, replace=False) # 비복원추출06주차 · 대표적인 이산형 확률분포05
함수 이름 뒤 괄호 안에 커서를 두고 Shift + Tab 을 누르면 작은 설명 창이 뜹니다.
np.var(|) ← 커서를 괄호 안에 두고 Shift + Tab
# 뜨는 설명의 첫 줄 (함수가 받는 인자)
# var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=False, ...)지금 쓰는 Jupyter Notebook 7 에서는 한 번만 누릅니다. 예전 버전처럼 여러 번 눌러 크게 펼치는 기능은 없어졌으니, 긴 설명은 다음 장의 ? 로 봅니다.
JupyterLab 문서 — Code completer jupyterlab.readthedocs.io/en/stable/user/completer.html
06주차 · 대표적인 이산형 확률분포06
var(a, axis=None, dtype=None, out=None, ddof=0, ...) 를 쪼개 봅니다.
| 부분 | 뜻 |
|---|---|
| a | = 없이 이름만 있다 → 반드시 넣어야 하는 인자. 분산을 구할 데이터 |
| ddof=0 | = 뒤에 값이 있다 → 안 넣으면 이 값을 쓴다. 0 이면 n 으로 나눈다 |
| axis=None | 안 넣으면 None — 표 전체를 하나로 본다. 오늘은 신경 쓰지 않아도 된다 |
기본값이 있는 인자는 대부분 건드리지 않아도 됩니다. 반드시 넣어야 하는 인자만 챙기면 됩니다.
06주차 · 대표적인 이산형 확률분포07
같은 분산인데 값이 다르게 나온 적이 있습니다. Shift + Tab 으로 두 함수를 열어 보면 이유가 보입니다.
np.var(scores) # 설명 첫 줄: ddof=0 → n 으로 나눈다 (교재 식)
df['score'].var() # 설명 첫 줄: ddof=1 → n-1 로 나눈다
df['score'].var(ddof=0) # 기본값을 바꾸면 np.var 와 같아진다06주차 · 대표적인 이산형 확률분포08
함수 이름 뒤에 ? 를 붙여 셀을 실행하면 설명서 전체가 뜹니다.
np.percentile? # 설명서 전체
stats.binom? # 이항분포 객체 설명
help(np.random.choice) # ? 와 같은 내용을 셀 아래에 출력
np.var?? # ?? 두 개는 함수의 소스 코드까지IPython 문서 — Exploring your objects ipython.readthedocs.io/en/stable/interactive/tutorial.html
06주차 · 대표적인 이산형 확률분포09
numpy·pandas·scipy 의 설명서는 같은 틀로 쓰여 있습니다. 필요한 칸만 찾아 읽습니다.
| 칸 | 무엇이 있나 | 언제 보나 |
|---|---|---|
| 첫 줄 (Signature) | 함수가 받는 인자와 기본값 | 무엇을 넣어야 하는지 모를 때 |
| Parameters | 인자 하나하나의 뜻 | 인자 이름은 아는데 뜻을 모를 때 |
| Returns | 무엇을 돌려주는지 | 결과가 숫자인지 배열인지 궁금할 때 |
| Examples | 실제 쓰는 예 | 가장 빠르다 — 예를 그대로 따라 한다 |
설명서는 영어입니다. 문장을 다 읽지 않고 Examples 의 코드부터 보면 대부분 풀립니다.
06주차 · 대표적인 이산형 확률분포10
stats.binom(n, p) 로 만든 분포에도 점 뒤 Tab 이 동작합니다.
rv = stats.binom(10, 0.3)
rv. ← 여기서 Tab
# 후보: pmf cdf mean var std rvs ...
rv.pmf(3) # P(X = 3)
rv.cdf(3) # P(X <= 3)06주차 · 대표적인 이산형 확률분포11
06주차 · 대표적인 이산형 확률분포12
| 하고 싶은 것 | 누르거나 쓰는 것 | 어디서 |
|---|---|---|
| 이름 채우기 · 후보 보기 | Tab | 이름 몇 글자 뒤, 점(.) 뒤 |
| 인자·기본값 보기 | Shift + Tab | 함수 괄호 안 |
| 설명서 전체 | np.var? 또는 help(np.var) | 셀에 쓰고 실행 |
| 소스 코드까지 | np.var?? | 셀에 쓰고 실행 |
| 셀 실행 | Shift + Enter | 셀 안 어디서나 |
이 표를 중간고사 A4 요약지에 옮겨 적어 두셔도 됩니다.
06주차 · 대표적인 이산형 확률분포13
np.random.choice(nums, 3, ___) 에서 비복원추출을 하려면 무엇을 넣나요? Shift + Tab 으로 확인해 보세요.
06주차 · 대표적인 이산형 확률분포14
replace=False
Shift + Tab 의 첫 줄이 choice(a, size=None, replace=True, p=None) 입니다. 기본값 replace=True 가 복원추출이므로, 비복원추출은 False 로 바꿉니다. 'False' 처럼 따옴표를 붙이면 글자로 읽혀 참이 되니 복원추출이 됩니다.
06주차 · 대표적인 이산형 확률분포15
rv = stats.poisson(3) 일 때 X 가 정확히 2 일 확률은? rv. 뒤에서 Tab 으로 후보를 보세요.
06주차 · 대표적인 이산형 확률분포16
rv.pmf(2)
pmf 는 확률질량함수, 곧 P(X = x) 입니다. cdf 는 P(X ≤ x) 라 0, 1, 2 의 확률을 모두 더한 값이 나옵니다. rvs 는 무작위로 값을 뽑는 함수입니다.
06주차 · 대표적인 이산형 확률분포17
np.percentile(scores, 25) 에서 25 는 무엇인가요? np.percentile? 로 Parameters 칸을 찾아보세요.
06주차 · 대표적인 이산형 확률분포18
하위 25% 지점 (백분위수)
Parameters 칸의 q 가 0 부터 100 사이의 백분위수입니다. 25 는 작은 쪽에서 25% 지점, 곧 제1사분위수 Q1 입니다. 75 를 넣으면 Q3 입니다.
06주차 · 대표적인 이산형 확률분포19
다음 실습부터는 함수 이름을 끝까지 치지 말고 Tab 으로 채워 보세요. 시험 전에 손에 익어야 시험장에서도 씁니다.
06주차 · 대표적인 이산형 확률분포20