inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

작업형2 모의문제2

LabelEncoding 시 train data 학습(fit_transform, transform)

해결된 질문

43

각나닫

작성한 질문수 1

0

작업형2 모의문제 풀이에서

for col in cols:
  le = LabelEncoder()
  train[col]=le.fit_transform(train[col])
  test[col]=le.transform(test[col])

다음과 같이 코딩을 진행하셨는데,

이는 그 후 train을 split해서 학습 시 이미 fit_transfrom이 되어 데이터 누출이 되는 방법 아닌가요?

python 머신러닝 빅데이터 pandas 빅데이터분석기사

답변 2

0

퇴근후딴짓

결론부터 말하면 데이터 누출(Data Leakage)이 아닙니다.

데이터 누출은 test의 정보가 train 학습에 영향을 줄 때 발생합니다.

이 코드는 train은 으로 인코딩 사전만들고 test에는 적용만 했어요!!

 

다만 강의에서는 데이터 누출에 대해 자세히 다루지 않고 있으며, train과 test의 카테고리가 다를 경우에는 누출 문제를 무시하고 둘을 합쳐서 인코딩하는 방법을 설명하고 있습니다. 이 부분은 시험에서 크게 중요하지 않아 별도로 설명하지 않고 있으니 참고해 주세요.

화이팅입니다!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 각나닫님.

질문해주신 코드에서 fit_transformtransform을 처리하는 방식은 머신러닝 모델에서 데이터 누출을 방지하기 위해 주의해야 할 부분입니다. LabelEncoderfit_transform을 데이터셋의 전체에 사용하는 것은 일반적으로 훈련과 테스트 데이터 분할 전 사전처리 단계에서만 사용하는 것이 바람직합니다. 그렇지 않으면, 데이터 누출(data leakage)이 발생할 수 있습니다.

데이터 누출이란, 모델이 테스트 데이터에 관한 정보를 모델 훈련 중에 미리 알게 되면서 일반화 성능이 실제로 과대 측정되는 문제를 의미합니다. 주로 훈련 세트에 포함되지 않은 데이터를 훈련하는 과정에서 안 보일 데이터의 일부를 누설하는 경우에 발생합니다.

이 문제를 방지하기 위해서는 다음과 같이 훈련 데이터와 테스트 데이터를 분할 후에 인코딩을 수행하는 방법이 있습니다:

from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split

# 데이터 분리
train_df, val_df = train_test_split(train, test_size=0.2, random_state=42)

# 각 범주형 컬럼에 대해 인코딩 수행
for col in cols:
    le = LabelEncoder()
    train_df[col] = le.fit_transform(train_df[col])
    val_df[col] = le.transform(val_df[col])
    test[col] = le.transform(test[col])

이 방법은 훈련 데이터(train_df)에 대해 LabelEncoder를 처음으로 적합(fit)하고, 그 동일한 인코더를 검증 및 테스트 데이터(val_dftest)에 적합한 인코딩 정보로 변환하는 방식입니다.

관련된 질문은 아래 링크를 통해 추가로 확인하실 수 있습니다. 유사하거나 확장된 설명과 예제가 포함되어 있습니다:
1. 반복문 안에서 LabelEncoder() 해주는 이유가 궁금합니다

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

각나닫

작업형 모의문제2 에서 말씀하신 대로 시도해 보았지만

y contains previously unseen labels: 'Westerleigh'

라는 오류가 떴습니다.

설명을 들어보니 train엔 없는 test의 컬럼 데이터값이 존재해서 이런 에러가 발생했다고 인지했지만, 해당 에러를 해결하기 위한 방법이 있는지 궁금합니다.

작업형1 - 연습문제 1번 관련 질문입니다.

0

23

2

강의 자료 16~39 관련

0

31

2

데이터 전처리 시 문의

0

39

2

random_state 값

0

32

2

인코딩 사용여부

0

38

2

인코딩 전 데이터 합치기 질문드립니다!

0

34

1

섹션5. 회귀 강의 관련 질문드립니다

0

41

2

수강기간연장 문의드립니다

0

45

2

수강 연장 문의

0

44

2

label 인코딩 에러 발생 원인

0

42

2

로지스틱 회귀분석은 옛날거 밖에 없나요?

0

47

2

판다스 표 표시

0

32

3

1유형 강의 다 나간 후 어떻게 할까요?

0

42

2

점수차가 많이 나는데 따로 하신게 있으신가요?

0

42

2

작업형1 모의문제 4번에 3)문제 질문

0

40

2

이상치 전처리 작업

0

47

2

평가결과값 문의

0

35

2

시계열 데이터 날짜와 시간 format

0

44

2

평가지표 F1 스코어 질문드립니다.

0

33

2

작업형 2 기출7회분에서

0

45

2

작업형2 모의문제1 (30강)

0

36

2

수강 기간 연장 문의 드립니다.

0

54

2

수강 계획과 관련해 문의 드립니다.

0

36

2

작업형1 - 연습문제 16~39 풀이는 몇강을 보면 되나요?

0

58

2