💻
손으로 ② — 빈칸 일곱을 채운다 (13분)
아래 코드는 6·7·8차시에서 쓰던 같은 골격입니다. 한 글자도 바뀌지 않았습니다.
브라우저의 파이썬은 차시가 바뀌면 새로 시작하므로, 앞 차시에서 만든 함수를 기억하지 못합니다.
그래서 매번 다시 싣습니다. 오늘 새로 붙은 것은 아래 셋뿐입니다.
to01() — 이름표를 1과 0으로 바꾸는 이음매. Ⅳ단원이 새로 붙인 유일한 줄입니다.
confusion() · scores() — Ⅱ-12에서 통째로 가져왔습니다. 설명이 ‘환자’인 채로 두었습니다.
by_group() · show_groups() — 집단마다 네 칸을 세고, n을 반드시 함께 돌려줍니다.
채울 곳은 일곱 군데(?????)입니다. 하나라도 남아 있으면 실행조차 되지 않습니다
(SyntaxError: invalid syntax). 그것은 고장이 아니라 안전장치입니다.
⚠️ 어림으로 적은 숫자와 돌려서 나온 숫자가 다를 때
이 견본 데이터는 지어낸 표입니다. 이 교과서를 설계할 때 그 결과를
전체 70%쯤·밝음 90%쯤·어두움 50%쯤으로 어림해 적어 두었습니다.
실제로 돌려 보니 85.4% · 96.4% · 70.0%가 나왔습니다.
하려던 이야기(밝음이 어두움보다 한참 낫다)는 그대로였지만 어림한 값은 하나도 맞지 않았습니다.
어림으로 적은 숫자와 돌려서 나온 숫자가 다르면, 언제나 돌려서 나온 쪽이 맞습니다.
5차시 계획서 칸 2에 “몇 %면 성공인가”를 적어 두었더라도, 발표 자료에는 오늘 실제로 나온 값을 적으세요.
계획서에 적어 둔 성공 기준은 지우지 말고 옆에 남겨 두세요 — 얼마나 빗나갔는지가 10차시 실험 기록의 한 줄이 됩니다.
ℹ️ 자기 데이터를 넣을 팀
맨 위 【0】 상자만 갈아 끼웁니다 — DATA와 다섯 줄
(NAMES · FEATURES · LABEL · GROUP · POSITIVE).
“DATA만 바꾸면 된다”가 아닙니다. NAMES를 안 고치면 load()가 첫 줄에서 막습니다.
나머지 다섯(SEED · RATIO · K_LIST · MIN_TEST · MIN_GROUP)은 건드리지 않습니다.
집단 이름은 한글 네 글자 이하로 지으세요 — 표의 집단 이름 칸이 열 칸이라 다섯 글자면 다음 칸과 붙습니다.
실행하면 무엇이 나오나
화면이 아홉 토막으로 나옵니다. 【1】은 6·7차시의 복습이고, 오늘 읽을 것은 【2】부터입니다.
【3】과 【4】는 아래 과제 ④의 표에 옮겨 적으세요. 그 표가 오늘의 산출물입니다.
【8】【9】는 시간이 남는 팀을 위한 읽을거리입니다. 아래 절에 표로 옮겨 두었습니다.
| 토막 | 무엇이 나오나 | 여기서 할 일 |
| 【2】 | 네 칸과 세 지표 · 검산 줄 | 검산이 “같다”로 나오는지 확인 |
| 【3】 | 집단별 표 (n 포함) · 두 격차 | 공책에 옮겨 적는다 |
| 【4】 | 그 집단의 기준선과의 차이 | 공책에 옮겨 적는다 |
| 【5】 | 틀린 것 하나하나 · 놓친 것과 잡은 것의 평균 | 공통점을 한 문장으로 적는다 |
| 【6】【7】 | 집단이 작으면 얼마나 튀나 · 왜 15개인가 | 우리 집단이 몇 개인지 견준다 |
| 【8】【9】 | k별 붕괴 · 더 잘게 쪼개기 | 시간이 남으면 |
과제 ④ — 우리 팀 표를 채운다
【3】과 【4】는 화면에 따로 뜨지만 같은 줄을 두 번 나눠 찍은 것입니다. 아래 한 표에 합쳐 적으세요.
새로 고침 한 번이면 화면은 사라지고, 이 표가 다음 시간 실험 기록의 첫 줄이 됩니다.
견본으로 진행하는 팀은 견본 값을 그대로 옮겨 적으면 됩니다.
다 채웠으면 가장 낮은 줄에 동그라미를 치고 그 옆에 한 문장을 적으세요 —
“우리 모델은 ○○ 집단(n=○)에서 그 집단의 기준선을 ○○%p 넘는 데 그쳤다.”
발표 자료의 첫 줄은 전체 정확도가 아니라 이 문장이어야 합니다.
【5】가 오늘 가장 쓸모 있는 화면이다
틀린 7장을 하나씩 늘어놓고, 놓친 것과 잡은 것의 특성 평균을 나란히 놓습니다.
둘 다 실제로는 ‘가능’인 병들입니다. 차이가 있다면 그것이 우리 모델이 걸려 넘어지는 자리입니다.
견본 데이터 · k=7. 놓친 7장 가운데 6장이 어두움 집단이고, 밝음은 1장뿐입니다.
| 특성 | 놓친 7개 | 잡은 22개 | 차이 |
| 반사도 | 1.2 | 1.2 | −0.0 |
| 밝기 | 151.0 | 235.2 | −84.2 |
| 투명도 | 48.0 | 63.4 | −15.4 |
| 이물질 | 21.2 | 14.8 | +6.4 |
| 찌그러짐 | 6.4 | 4.4 | +2.1 |
다섯 특성 가운데 넷이 한쪽으로 쏠려 있습니다.
놓친 것은 어둡고, 덜 비쳐 보이고, 이물질이 많고, 더 찌그러져 있습니다.
어두운 데서 찍으면 투명도가 덜 보인다는 것까지 표가 말해 줍니다.
⚠️ 오류 분석의 결론을 “데이터를 더 모으자”로 끝내지 마라
그 문장은 아무것도 정하지 않습니다. 이 표가 가리키는 답은 하나입니다 —
어두운 데서 찍은 ‘가능’ 사진을 더 모은다. 아무 사진이나 더 모으면 밝음 집단만 더 뚱뚱해집니다.
무엇을 더 모을지가 나오지 않으면 오류 분석을 한 것이 아닙니다.
이 한 문장이 다음 시간 실험 기록표의 첫 줄이 됩니다.
코드를 만지다 걸리는 함정 하나
“MIN_GROUP을 15에서 5로 바꾸면 경고가 사라지겠지” 하고 맨 위 값을 고쳐 보는 학생이 반드시 나옵니다.
고쳐도 아무 일도 일어나지 않습니다. check_sizes()는 여전히 “15개는 넘겨야”라고 찍습니다.
파이썬은 def 줄을 읽는 그 순간에 기본값을 한 번 묶어 둡니다.
나중에 MIN_GROUP을 바꿔도 이미 묶인 값은 따라오지 않습니다.
정말 바꾸려면 인자로 넘겨야 합니다 — by_group(triples, 5).
“설정을 바꿨는데 반영이 안 된다”의 정체가 대개 이것입니다.