
단일 train-test split 만으로는 평가가 데이터 쪼개기 운 에 흔들립니다. K-fold 는 데이터를 k 조각으로 나눠 각각을 한 번씩 validation 으로 사용, 나머지 k-1 조각을 training 으로 사용합니다. 총 k번의 학습·평가로 더 안정적인 성능 추정.
[0, 1, ..., N-1] 를 셔플 (재현성 시드).k 개의 대략 같은 크기 조각으로 분할.for train_idx, val_idx in k_fold_indices(N, 5, seed=0):
X_tr, y_tr = X[train_idx], y[train_idx]
X_val, y_val = X[val_idx], y[val_idx]
# 학습 → 평가
함수 k_fold_indices(n, k, seed) 를 완성하세요.
k 개 튜플 (train_idx, val_idx) 를 원소로 갖는 리스트 — 각 인덱스 배열은 1D NumPy 정수 배열.np.random.default_rng(seed).permutation(n) 으로 셔플.np.array_split 로 균등(거의) 분할.| # | 이름 | 검증 |
|---|---|---|
| 1 | 길이 = k | len(folds) == k |
| 2 | val 합집합 = 전체 | union(val) == range(n) |
| 3 | val 간 disjoint | 서로 겹치지 않음 |
| 4 | train, val 합 = 전체 | 각 fold 에서 |
| 5 | 시드 재현성 |
코드를 작성하고 Run 을 눌러보세요.