← 문제 목록/Fit-Transform Standardization (leakage-free) [medium]
문제 해설

Fit-Transform Standardization (leakage-free) [medium]

전처리 · medium

preview

Fit-Transform Standardization [medium]

v1 표준화한 배열 에만 적용. 실전에선:

  1. Train 만으로 통계 추정 (μ,σ\mu, \sigma).
  2. 같은 통계를 train + test 모두에 적용.

이게 data leakage 방지 의 핵심. train + test 합친 전체에서 평균·분산을 계산하면 test 정보가 train 에 새어 들어감 (특히 cross-validation 에서).

수식

μjtr=1NtriXijtr,σjtr=std(X:jtr)\mu_j^\text{tr} = \frac{1}{N_\text{tr}} \sum_i X^\text{tr}_{ij}, \quad \sigma_j^\text{tr} = \text{std}(X^\text{tr}_{:j}) Xtr=(Xtrμtr)/σtr,Xte=(Xteμtr)/σtrX'_\text{tr} = (X_\text{tr} - \mu^\text{tr}) / \sigma^\text{tr}, \quad X'_\text{te} = (X_\text{te} - \mu^\text{tr}) / \sigma^\text{tr}

영분산 특성 처리

  • 어떤 열의 train std 가 0 (상수) → 나누면 NaN.
  • 관례: sigma = 1.0 로 덮어써서 해당 열은 중심화만 → 결과 = 0.

과제

함수 standardize_fit_transform(X_train, X_test) 를 완성하세요.

  • 반환: (X_train_std, X_test_std, mu, sigma).
  • 힌트:
    mu = X_train.mean(axis=0)
    sigma = X_train.std(axis=0)
    sigma = np.where(sigma > 0, sigma, 1.0)  # 영분산 방어
    return (X_train - mu) / sigma, (X_test - mu) / sigma, mu, sigma
    

테스트 케이스

#이름검증
1반환 4-tuple
2X_train 평균 ≈ 0, std ≈ 1
3X_test 는 X_train 통계로 변환 (test 자체 통계 ≠ 0/1)
4같은 stat 으로 apply → X_test+X_train 합쳐서 재계산과 다름누수 방지
5영분산 열 → 0 (NaN 없음)
6X_test=X_train 이면 결과 동일
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.