데이터 분할 도구 사용법 — 학습·테스트 세트를 올바르게 나누기
CSV 파일을 Train / Validation / Test 세트로 나누고, 나눈 결과가 공정한지 분포까지 확인하는 도구입니다.
어떤 상황에서 쓰는 도구인가요
모델의 성적은 한 번도 보지 않은 데이터로 매겨야 합니다. 시험 문제를 미리 보고 공부한 학생이 100점을 받았다면, 그 점수는 실력이 아니라 암기의 증거입니다. 모델도 똑같습니다 — 학습에 쓴 데이터로 평가하면 성능이 실제보다 좋아 보이고, 배포한 뒤에야 진짜 실력이 드러납니다. 그래서 머신러닝 실습의 첫 순서는 언제나 데이터를 학습용(Train)과 평가용(Test)으로 나누는 일입니다. 이 문제를 깊이 다룬 데이터 누수 이야기와 함께 읽으면 좋습니다.
그런데 '나누기'가 생각보다 간단하지 않습니다. 비율은 얼마로 할지, 순서는 섞을지, 클래스 비율은 유지할지, 같은 분할을 재현하려면 어떻게 할지 — 이 도구는 그 결정들을 체크박스와 숫자 입력 몇 개로 정리해 줍니다.
이 도구는 무엇을 하나요
CSV 파일을 올리면 지정한 비율대로 Train / Validation / Test 세 세트로 나누고, 각 세트를 CSV 또는 ZIP으로 내려받게 해 줍니다. 랜덤 시드 고정, 층화 추출, 셔플 여부 같은 실무에서 중요한 옵션을 모두 지원하고, 분할 후에는 세트끼리 통계 분포가 비슷한지 비교하는 표까지 보여줍니다. 모든 처리는 브라우저 안에서 이뤄지므로 올린 파일이 서버로 전송되지 않습니다.
단계별 사용법
- CSV 파일 업로드 — 파일을 드래그하거나 클릭해 선택합니다. 헤더(첫 행 컬럼명)가 포함된 CSV를 기준으로 하며, UTF-8 / EUC-KR 인코딩은 자동 감지됩니다. 올리면 파일명과 행 · 열 수가 배지로 표시됩니다.
- 비율 정하기 — Train / Validation / Test 비율을 %로 입력합니다. 기본값은 70 / 15 / 15이고, 합계가 100%가 되어야 실행할 수 있습니다. Validation은 선택 사항이라 0으로 두면 Train / Test 2분할이 됩니다. 하이퍼파라미터를 조정할 계획이 있다면 Validation을 남겨 두는 편이 안전합니다.
- 랜덤 시드 설정 — 기본값 42. 같은 시드로 실행하면 언제나 같은 분할이 나옵니다. 실험을 재현하거나 팀원과 같은 세트를 공유해야 할 때 시드를 기록해 두세요.
- 층화 추출 컬럼 고르기 (선택) — 분류 문제라면 정답 라벨 컬럼을 층화 추출 기준 컬럼으로 지정하세요. 컬럼의 값별 비율이 Train / Val / Test 모두에서 비슷하게 유지되도록 그룹 단위로 나눕니다. 불량률 3%짜리 데이터를 그냥 나누면 Test에 불량이 거의 안 들어갈 수 있는데, 층화가 이를 막아줍니다.
- 셔플 · 인덱스 옵션 — 셔플(기본 켜짐)은 행 순서를 무작위로 섞은 뒤 나눕니다. 원본 인덱스 열 추가를 켜면 각 행이 원본의 몇 번째 행이었는지(_original_index)가 결과 파일에 함께 저장되어 나중에 추적할 수 있습니다.
- ✂️ 분할 실행 — 버튼을 누르면 세트별 행 수와 비율이 요약 박스로 표시되고, 수치형 컬럼별로 Train / Val / Test의 평균과 표준편차를 나란히 비교하는 표가 나타납니다. 각 세트 상위 5행 미리보기로 실제 내용도 확인할 수 있습니다.
- ⬇ 다운로드 — Train / Val / Test CSV를 각각 받거나, 전체 ZIP 다운로드로 세 파일을 한 번에 받습니다. 파일명 뒤에 _train, _val, _test가 자동으로 붙습니다.
결과를 읽는 법
분할 결과에서 가장 눈여겨볼 곳은 컬럼별 분포 비교 표입니다. 무작위 분할이 잘 됐다면 Train과 Test의 평균(그리고 괄호 안 표준편차)이 서로 비슷해야 합니다. 두 세트의 평균이 크게 다르다면 데이터가 어떤 순서로 정렬돼 있었거나 표본이 너무 작다는 신호이므로, 셔플 상태와 층화 설정을 다시 확인해 보세요.
미리보기의 TRAIN / VAL / TEST 배지도 훑어볼 가치가 있습니다. 특히 층화 추출을 썼다면, 지정한 컬럼의 값들이 각 세트에 고르게 들어갔는지 눈으로 확인할 수 있습니다. 분할이 끝난 뒤의 원칙도 기억해 두세요 — 결측 채우기나 스케일링 같은 전처리는 분할 후에, Train 기준으로만 학습해서 Test에 적용해야 합니다. 전체 데이터로 전처리하면 그 순간 Test의 정보가 새어 들어갑니다.