RAG2026-5일40차시 · 발표와 정리13 / 16← 이전목차다음 →MetaContents

40차시. 발표와 정리

퀴즈 1 — Dev와 Holdout 차이 판정하기

Dev 점수 dev, Holdout 점수 holdout(0~1), Holdout 문항 수 n_holdout 을 받아 차이(%p), 한 문항 몫(%p), 판정을 돌려주는 holdout_gap 을 완성해 보세요. 차이가 5%p 이내면 "건강", 10%p 이상이면 "Dev 에 과하게 맞춤" 입니다. 차이가 한 문항 몫보다 작으면 참고치라는 메모도 붙이세요.

빈칸 코드에서 시작합니다.

Python
def holdout_gap(dev, holdout, n_holdout):
    # 돌려줄 값: (gap, per_item, verdict, note)
    pass
결과 보기 (예시 풀이)
Python
# 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이 진짜 실력인가

← 이전 절40차시 · 체크리스트와 과제다음 절 →40차시 · 퀴즈 2 — README 빠진 항목 찾기