💻
손으로 ① — 버그 셋을 짝과 함께 잡는다
아래 파일이 갑·을·병이 합쳐 놓은 그 파일입니다. 588줄이지만 겁먹지 마세요.
여러분이 고칠 곳은 딱 세 곳이고, 나머지는 6차시·7차시에서 이미 본 골격 그대로입니다.
먼저 이 파일의 지도를 봅시다.
26~46
【0】 우리 팀 설정 — NAMES·FEATURES·SEED·K_LIST.
고칠 곳 하나가 여기 있습니다(33줄).
48~66
wpad·line — 표를 가지런히 찍는 도구. 2단원 4·5차시에서 그대로.
69~230
DATA 162줄 — 견본 페트병 표 160행. 읽지 않아도 됩니다.
자기 팀 데이터가 있으면 이 자리를 갈아 끼웁니다.
233~372
load·column·numeric_cols·mean·median·stdev·clean
— 6차시의 읽기와 다듬기.
374~441
dist·minmax_fit·minmax_apply(2단원 5차시) ·
featurize·split·check_sizes(6차시).
443~478
nearest·knn·accuracy(2단원 8차시) · baseline(2단원 11차시).
고칠 곳 하나가 여기 있습니다(449줄).
480~516
【1】 파이프라인 — 읽고 · 다듬고 · 나누고 · 자 재고 · k를 돌린다.
고칠 곳 하나가 여기 있습니다(494줄).
518~582
【2】 검사표 — 빈칸 여섯 개(WANT1~WANT6). 오늘 첫 5분에 채웁니다.
💡 22분을 이렇게 씁니다
빈칸 여섯 5분 → ㄱ 3분 → ㄴ 5분 →
ㄷ 6분 → 협업 기록표 3분.
운전대와 길잡이를 버그 하나마다 바꿉니다.
빈칸이 하나라도 남아 있으면 SyntaxError로 아예 실행되지 않으니, 빈칸이 먼저입니다.
증상은 차례로 드러난다
세 버그는 줄 서서 기다립니다. 하나를 고쳐야 다음 증상이 보입니다.
아래 표는 여러분 화면에 무엇이 나와야 하는지를 미리 적어 둔 것입니다.
화면이 이 표와 다르면 고친 곳이 다른 것입니다.
| 단계 | 고친 것 | 화면에 나오는 것 | 검사표 |
| 0 | 빈칸만 채웠다 |
ZeroDivisionError — ‘정제 160행 → 158행’ 두 줄만 찍히고 멈춘다 |
못 돈다 |
| 1 | ㄱ — FEATURES에서 "기기번호"를 뺀다 |
k 일곱 개가 모두 100.0% · 맞힌 수 110/110 ·
화면의 테스트는 48 · 기준선 50.9% |
3/6 |
| 2 | ㄴ — 494줄의 train_rows를 test_rows로 |
k 일곱 개가 모두 70.8%(34/48) · 기준선 60.4% · 차이 +10.4%p |
4/6 |
| 3 | ㄷ — 449줄의 ranked[:1]을 ranked[:k]로 |
k=1 70.8% · k=3 81.2% · k=5 83.3% · k=7 85.4% ·
k=9 79.2% · k=15 75.0% · k=25 75.0% · 기준선 60.4% · 차이 +25.0%p |
6/6 |
3단계의 표는 7차시의 표와 글자까지 같습니다. 그것이 “다 고쳤다”의 증거입니다 —
‘오류가 사라졌다’가 아니라 ‘검사가 통과했다’가 기준입니다.
⚠ 1단계에서 놓치기 쉬운 세 번째 단서
1단계의 기준선이 7차시의 60.4%가 아니라 50.9%로 나옵니다.
왜일까요? 테스트가 훈련과 같아지면 기준선까지 훈련의 것이 되기 때문입니다.
훈련 110개 중 ‘가능’이 56개라 56/110 = 50.9%가 된 것이지요.
정확도 100%보다 이 숫자가 더 조용한 단서입니다.
협업 기록표 — 고칠 때마다 한 줄
고친 뒤에 “고쳤다”고만 말하면 팀의 다른 사람은 그것을 되돌릴 수도, 이어받을 수도 없습니다.
무엇을 · 왜 · 무엇으로 확인했나 셋을 한 줄로 남깁니다.
아래 표는 화면에서 바로 적어도 되고, 공책에 옮겨 적어도 됩니다.
‘무엇으로 확인했나’ 칸에 “돌아갔다”라고 쓰면 안 됩니다.
“검사 6이 ✔로 바뀌었다”, “맞힌 수가 110/110에서 34/48로 바뀌었다”처럼
숫자나 판정으로 적으세요. 오늘 이 칸이 곧 10차시 실험 기록과 11차시 발표의 뼈대가 됩니다.