본문 바로가기
C.W.K.
Stream
Lesson 07 of 08 · published

Splitting, Combining, Concatenating

~20 min · datasets, split

Level 0스카우트
0 XP0/50 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

분할에는 비율뿐 아니라 재현성도 넣어

ds.train_test_split(test_size=0.1, seed=42, stratify_by_column='label')은 train과 test를 담은 DatasetDict를 만들어. seed는 같은 분할을 다시 만들게 하고, 층화는 label 비율을 보존해 불균형 분류 평가가 우연한 표본에 흔들리지 않게 해.

붙일지, 비율대로 섞을지 결정해

concatenate_datasets([a, b, c])는 데이터셋의 행을 차례로 이어 붙여. interleave_datasets(..., probabilities=[0.6, 0.3, 0.1])는 매 단계 어느 자료원에서 뽑을지 정해. 선별 데이터와 크롤 자료를 목표 비율로 섞을 때는 후자가 맞아.

Code

Stratified split + concatenate·python
from datasets import load_dataset, concatenate_datasets, interleave_datasets

a = load_dataset("stanfordnlp/imdb", split="train")
print(a.features["label"])  # ClassLabel

splits = a.train_test_split(test_size=0.1, seed=42, stratify_by_column="label")
print({k: len(v) for k, v in splits.items()})

# Concat (stacked rows)
combined = concatenate_datasets([splits["train"], splits["test"]])
print(len(combined), len(a))

# Interleave (학습 중 확률적 mix)
b = load_dataset("stanfordnlp/imdb", split="test")
mixed = interleave_datasets([a, b], probabilities=[0.7, 0.3], seed=42, stopping_strategy="first_exhausted")
print(type(mixed), len(mixed))

External links

Exercise

분류 데이터셋 아무거나. seed=42 로 stratified 80/10/10 train/dev/test split 돌려. 셋 다 클래스 균형 보존 검증. 같은 seed 로 non-stratified split 돌려 클래스 균형 비교 — 작은 데이터셋엔 보통 눈에 띄게 나쁨.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.