40차시. 발표와 정리
퀴즈 1 — Dev와 Holdout 차이 판정하기
Dev 점수 dev, Holdout 점수 holdout(0~1), Holdout 문항 수 n_holdout 을 받아 차이(%p), 한 문항 몫(%p), 판정을 돌려주는 holdout_gap 을 완성해 보세요. 차이가 5%p 이내면 "건강", 10%p 이상이면 "Dev 에 과하게 맞춤" 입니다. 차이가 한 문항 몫보다 작으면 참고치라는 메모도 붙이세요.
빈칸 코드에서 시작합니다.
def holdout_gap(dev, holdout, n_holdout):
# 돌려줄 값: (gap, per_item, verdict, note)
pass결과 보기 (예시 풀이)
# 1-1절 "Dev 보다 낮게 나오는 것이 정상입니다" 를 숫자로 읽어 봅니다.
# Dev 와 Holdout 의 차이(%p)를 구하고, Holdout 한 문항이 몇 %p 인지 함께 봅니다.
def holdout_gap(dev, holdout, n_holdout):
# 0.857 → 85.7 처럼 백분율로 바꿔 차이를 %p 로 냅니다.
gap = round((dev - holdout) * 100, 1)
# 문항이 적으면 한 문항만 틀려도 점수가 크게 움직입니다.
per_item = round(100 / n_holdout, 1)
# 수업 자료의 기준: 5%p 이내는 건강, 10%p 이상은 Dev 에 과하게 맞춘 것입니다.
if gap <= 5:
verdict = "건강"
elif gap >= 10:
verdict = "Dev 에 과하게 맞춤"
else:
verdict = "그 사이 (두 숫자를 함께 밝힘)"
# 차이가 한 문항 몫보다 작으면 표본 탓일 수 있으니 참고치로만 봅니다.
note = "한 문항 차이보다 작음, 참고치" if gap < per_item else ""
return gap, per_item, verdict, note
def show(name, dev, holdout, n):
gap, per_item, verdict, note = holdout_gap(dev, holdout, n)
print(f"[{name}] Dev {dev:.1%} → Holdout {holdout:.1%} · 차이 {gap}%p · 1문항 {per_item}%p · {verdict}"
+ (f" · {note}" if note else ""))
# 예시 1: 수업 자료의 숫자(Dev 85.7%, Holdout 77.8%, 9문항) → 차이 7.9%p 가 한 문항 몫(11.1%p)보다 작아야 합니다.
show("인사규정", 0.857, 0.778, 9)
# 예시 2: 차이가 4%p → 건강이어야 합니다.
show("매뉴얼", 0.90, 0.86, 30)
# 예시 3: 차이가 15%p → Dev 에 과하게 맞춤이어야 합니다.
show("과적합", 0.95, 0.80, 20)
실행 결과
[인사규정] Dev 85.7% → Holdout 77.8% · 차이 7.9%p · 1문항 11.1%p · 그 사이 (두 숫자를 함께 밝힘) · 한 문항 차이보다 작음, 참고치
[매뉴얼] Dev 90.0% → Holdout 86.0% · 차이 4.0%p · 1문항 3.3%p · 건강
[과적합] Dev 95.0% → Holdout 80.0% · 차이 15.0%p · 1문항 5.0%p · Dev 에 과하게 맞춤채점 기준: 백분율 차이와 100 / 문항 수를 구하고, 5%p 와 10%p 기준으로 판정하면 정답입니다.
관련 교안: 40차시 「1. [0~15분] Holdout 최종 평가」 › 1-1) 왜 Holdout이 진짜 실력인가