dataforge.ai.kr
‹ 가이드 홈
dataforge.ai.kr/prep/split

데이터 분할 도구 사용법 — 학습·테스트 세트를 올바르게 나누기

CSV 파일을 Train / Validation / Test 세트로 나누고, 나눈 결과가 공정한지 분포까지 확인하는 도구입니다.

구성: 📂 CSV 파일 업로드 · ⚙️ 분할 설정 · 📊 분할 결과 · ⬇ 다운로드

어떤 상황에서 쓰는 도구인가요

모델의 성적은 한 번도 보지 않은 데이터로 매겨야 합니다. 시험 문제를 미리 보고 공부한 학생이 100점을 받았다면, 그 점수는 실력이 아니라 암기의 증거입니다. 모델도 똑같습니다 — 학습에 쓴 데이터로 평가하면 성능이 실제보다 좋아 보이고, 배포한 뒤에야 진짜 실력이 드러납니다. 그래서 머신러닝 실습의 첫 순서는 언제나 데이터를 학습용(Train)과 평가용(Test)으로 나누는 일입니다. 이 문제를 깊이 다룬 데이터 누수 이야기와 함께 읽으면 좋습니다.

그런데 '나누기'가 생각보다 간단하지 않습니다. 비율은 얼마로 할지, 순서는 섞을지, 클래스 비율은 유지할지, 같은 분할을 재현하려면 어떻게 할지 — 이 도구는 그 결정들을 체크박스와 숫자 입력 몇 개로 정리해 줍니다.

이 도구는 무엇을 하나요

CSV 파일을 올리면 지정한 비율대로 Train / Validation / Test 세 세트로 나누고, 각 세트를 CSV 또는 ZIP으로 내려받게 해 줍니다. 랜덤 시드 고정, 층화 추출, 셔플 여부 같은 실무에서 중요한 옵션을 모두 지원하고, 분할 후에는 세트끼리 통계 분포가 비슷한지 비교하는 표까지 보여줍니다. 모든 처리는 브라우저 안에서 이뤄지므로 올린 파일이 서버로 전송되지 않습니다.

단계별 사용법

  1. CSV 파일 업로드 — 파일을 드래그하거나 클릭해 선택합니다. 헤더(첫 행 컬럼명)가 포함된 CSV를 기준으로 하며, UTF-8 / EUC-KR 인코딩은 자동 감지됩니다. 올리면 파일명과 행 · 열 수가 배지로 표시됩니다.
  2. 비율 정하기 — Train / Validation / Test 비율을 %로 입력합니다. 기본값은 70 / 15 / 15이고, 합계가 100%가 되어야 실행할 수 있습니다. Validation은 선택 사항이라 0으로 두면 Train / Test 2분할이 됩니다. 하이퍼파라미터를 조정할 계획이 있다면 Validation을 남겨 두는 편이 안전합니다.
  3. 랜덤 시드 설정 — 기본값 42. 같은 시드로 실행하면 언제나 같은 분할이 나옵니다. 실험을 재현하거나 팀원과 같은 세트를 공유해야 할 때 시드를 기록해 두세요.
  4. 층화 추출 컬럼 고르기 (선택) — 분류 문제라면 정답 라벨 컬럼을 층화 추출 기준 컬럼으로 지정하세요. 컬럼의 값별 비율이 Train / Val / Test 모두에서 비슷하게 유지되도록 그룹 단위로 나눕니다. 불량률 3%짜리 데이터를 그냥 나누면 Test에 불량이 거의 안 들어갈 수 있는데, 층화가 이를 막아줍니다.
  5. 셔플 · 인덱스 옵션셔플(기본 켜짐)은 행 순서를 무작위로 섞은 뒤 나눕니다. 원본 인덱스 열 추가를 켜면 각 행이 원본의 몇 번째 행이었는지(_original_index)가 결과 파일에 함께 저장되어 나중에 추적할 수 있습니다.
  6. ✂️ 분할 실행 — 버튼을 누르면 세트별 행 수와 비율이 요약 박스로 표시되고, 수치형 컬럼별로 Train / Val / Test의 평균과 표준편차를 나란히 비교하는 표가 나타납니다. 각 세트 상위 5행 미리보기로 실제 내용도 확인할 수 있습니다.
  7. ⬇ 다운로드 — Train / Val / Test CSV를 각각 받거나, 전체 ZIP 다운로드로 세 파일을 한 번에 받습니다. 파일명 뒤에 _train, _val, _test가 자동으로 붙습니다.
💡 시계열 데이터라면 셔플을 끄세요. 시간 순서가 있는 데이터를 무작위로 섞어 나누면 '미래 데이터로 학습해서 과거를 예측'하는 누수가 생깁니다. 셔플 체크를 해제하면 원본 순서 그대로 앞부분이 Train, 뒷부분이 Test가 되어 시간 순서가 지켜집니다.

결과를 읽는 법

분할 결과에서 가장 눈여겨볼 곳은 컬럼별 분포 비교 표입니다. 무작위 분할이 잘 됐다면 Train과 Test의 평균(그리고 괄호 안 표준편차)이 서로 비슷해야 합니다. 두 세트의 평균이 크게 다르다면 데이터가 어떤 순서로 정렬돼 있었거나 표본이 너무 작다는 신호이므로, 셔플 상태와 층화 설정을 다시 확인해 보세요.

미리보기의 TRAIN / VAL / TEST 배지도 훑어볼 가치가 있습니다. 특히 층화 추출을 썼다면, 지정한 컬럼의 값들이 각 세트에 고르게 들어갔는지 눈으로 확인할 수 있습니다. 분할이 끝난 뒤의 원칙도 기억해 두세요 — 결측 채우기나 스케일링 같은 전처리는 분할 후에, Train 기준으로만 학습해서 Test에 적용해야 합니다. 전체 데이터로 전처리하면 그 순간 Test의 정보가 새어 들어갑니다.

🤔 생각해볼 점 — 같은 파일을 시드만 바꿔 두 번 나눠 보세요. 분포 비교 표의 평균이 얼마나 달라지나요? 데이터가 작을수록 시드에 따라 결과가 출렁이는데, 그렇다면 행이 100개뿐인 데이터에서 Test 15%(15행)로 잰 성능은 얼마나 믿을 수 있을까요?
✂️ 데이터 분할 도구 열기 →

함께 보면 좋은 가이드