강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

dnrwls9115님의 프로필 이미지
dnrwls9115

작성한 질문수

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

예시문제 작업형2(ver. 2025) 🆕

인코딩 관련질문

해결된 질문

작성

·

43

0

안녕하세요 선생님. 제가 수강을통해 배우기로는

decribe(include ='O')속성을 찍어봐서 unique개수가 맞지않으면 데이터를 합친 후 인코딩을 진행하는거로

알고있습니다. 강의중에는 평소에는 보통 그냥 train,test를 따로따로 인코딩 하시더라고요.(원핫에경우에도, 라벨인코딩일때는 train ->fit_transform, test->transform이런식으로). 저도 이 방식으로 하다가

 

원핫이든 라벨인코딩이든 unique개수가 같든 그냥 모두 데이터를 합친 후, 인코딩 한 후에 데이터를 다시 train과 test를 분할해 사용하고 있습니다.(스케일링 필요할 경우에는 인코딩 후 스케일링 후 분할). 혹시 이 방법으로 계속 진행하고 시험환경에서도 그렇게 해도될지 질문드립니다.

 

data = pd.concat([train, test], axis =0)
print(data.shape)

from sklearn.preprocessing import LabelEncoder
cols = data.select_dtypes(include = "object").columns

for col in cols:
  la = LabelEncoder()
  data[col] = la.fit_transform(data[col])

train = data[:len(train)].copy()
test = data[len(train):].copy()
print(train.shape, test.shape)

답변 2

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

네 계속 진행하면 아무런 문제가 없어요!

다만 합치기 전에 target 컬럼만 꼭 분리해 주세요 🙂

 

분리를 안하게 되면 합쳤다가 다시 나누었을 때 test에도 target컬럼이 생겨요

0

안녕하세요, 인프런 AI 인턴입니다.

dnrwls9115님께서 제기하신 질문은 데이터 전처리 과정에서 매우 중요한 인코딩 부분에 대한 것입니다. 데이터 분석 및 머신러닝 모델링에서 인코딩은 신중하게 접근해야 하는 과정입니다. 다음은 dnrwls9115님의 상황을 고려한 답변입니다.

1. 학습 데이터와 테스트 데이터의 인코딩

  • 데이터 합치기 전략: 이 방법은 train과 test 데이터를 한 번에 인코딩하여, 스케일링을 포함한 모든 전처리 과정을 일관되게 처리할 수 있는 장점이 있습니다. 특히 원핫 인코딩에서, 테스트 데이터에 없는 카테고리로 인한 오류를 방지할 수 있습니다.

  • 개별 인코딩: 개별적으로 인코딩을 할 경우, 일부 상황에서는 train과 test 데이터에 서로 다른 컬럼이 생기는 문제가 발생할 수 있습니다. 이는 특히 원핫 인코딩에서 문제가 될 수 있습니다. 따라서 라벨 인코딩의 경우에는 train에서 학습한 레이블로 test에 대해 transform만 수행하면 되므로 크게 문제가 되지 않습니다. 반면, 원핫 인코딩의 경우에는 합쳐서 한 번에 처리하는 방법이 더 안전합니다.

2. 시험 환경 고려

  • 시험 안정성: 시험 환경에서는 최대한 오류 없이 결과를 얻어야 하므로, train과 test 데이터를 합쳐서 인코딩하고 나누는 방식은 시험 중 발생할 수 있는 여러 문제를 미연에 방지할 수 있습니다.

  • 다양성 관리: train 데이터에 대한 학습이 끝난 후 test 데이터에 대해서만 transform을 수행하여 결과를 비교할 수 있으므로, 데이터의 다양한 케이스에 대비할 수 있습니다.

3. 권장 사항

  • 현재 방법 지속 추천: dnrwls9115님께서 현재 사용하고 있는 방법(데이터 합친 후 인코딩 후 분할)은 문제 발생 가능성을 줄이고, 일관된 인코딩 상태를 유지할 수 있는 효과적인 방법입니다. 시험 환경에서 이 방법을 사용할 것을 권장드립니다.

  • 스케일링도 포함: 말씀하신 대로 스케일링을 인코딩 후에 적용하여 데이터를 잘 분할한다면, 그 점 또한 좋은 점수를 받을 수 있는 확률을 높입니다.

마지막으로, 동일한 주제로 도움이 될 수 있는 기존 답변은 아래 URL에서 확인해 보실 수 있습니다:

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

dnrwls9115님의 프로필 이미지
dnrwls9115

작성한 질문수

질문하기