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

lcm0153님의 프로필 이미지

작성한 질문수

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

모델링 및 평가(분류)

피처엔지니어링 - 원핫인코딩 get_dummies()

해결된 질문

24.05.27 23:48 작성

·

217

0

안녕하세요, 덕분에 재미있게 빅분기 실기 시험 준비 중입니다 : )

범주형 변수의 unique 수가 train 데이터셋과 test 데이터셋에서 서로 다를 때, 원핫인코딩을 진행하게 되면 Feature의 수가 다르므로 일치시키기 위해... train 데이터셋과 test 데이터셋을 먼저 concat으로 합친 후에 원핫인코딩을 진행하고 분리하는 것으로 이해했습니다!

기존 질문과 답변주신 것들을 살펴보니, get_dummies() 사용 시, 자동으로 범주형 변수만 선택하여 원핫인코딩하고 전체데이터를 반환하므로 X_train 데이터를 사용해도 무관하다고 하셨는데요~

 

수업에서는 all_df = pd.get_dummies(all_df[cols])로 작성하니 범주형 변수 cols에 해당하는 데이터만 원핫인코딩되어 전체데이터가 아닌 범주형 변수의 원핫인코딩 결과만 all_df에 담기게 되는 것 같습니다.

 

말씀주신 것처럼, 자동으로 범주형 변수만 원핫인코딩하고 전체 데이터를 반환하기 위해서는, 이 코드를 all_df = pd.get_dummies(all_df)로 바꾸어야 되는게 맞는건가요?

답변 2

0

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

2024. 05. 28. 01:55

와우!! 재미있게 준비하고 있다니 저도 재미있게 답변을 해야할 것 같네요 🤗

네, 정확하게 이해했습니다. 다시 촬영을 해야겠네요!

 

아래 코드는 범주형만 자동으로 원핫인코딩 후 전체 데이터를 반환합니다.

pd.get_dummies(all_df)

 

반면 아래 코드는 범주형 변수의 원핫인코딩 결과만 반환합니다.

pd.get_dummies(all_df[cols])

0

인프런 AI 인턴님의 프로필 이미지

2024. 05. 27. 23:51

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

lcm0153님의 질문에 대한 답변은 예, 맞습니다. pd.get_dummies() 함수는 데이터프레임 내의 범주형 변수에 대해 자동으로 원-핫 인코딩을 수행하며, 인자로 전체 데이터프레임 all_df를 넘겨주었을 때, 모든 범주형 변수에 대해 원-핫 인코딩을 수행한 후에 변환된 결과를 포함한 전체 데이터프레임을 반환합니다.

따라서, 범주형 변수만 선택하여 원핫 인코딩하고 싶은 경우에는 명시적으로 해당 컬럼만 선택하여 pd.get_dummies() 함수를 호출하는 것이 아니라, 전체 데이터프레임에 대하여 pd.get_dummies() 함수를 호출해야 합니다. 이 경우, 함수는 자동으로 데이터프레임 내의 범주형 변수를 식별하고 이들에 대해서만 원-핫 인코딩을 수행합니다. 따라서, all_df = pd.get_dummies(all_df)와 같이 코드를 작성하는 것이 맞습니다.

특히, train 데이터셋과 test 데이터셋에서 범주형 변수의 unique 값의 수가 서로 다를 때, 데이터셋을 먼저 합친 후 원-핫 인코딩을 수행하고 다시 분리하는 접근 방식이 매우 유용합니다. 이 방법을 통해 모델이 학습과 검증 시 일관된 피쳐 세트를 사용할 수 있게 됩니다.

질문해주신 내용과 관련된 유사 질문과 답변 링크는 다음과 같습니다:
- 섹션6 모의고사 풀어보기 2 관련
- 원핫인코딩 관련

위 내용이 lcm0153님의 질문에 대한 명확한 답변이 되기를 바랍니다. pd.get_dummies의 사용법에 대해서 더 궁금한 점이 있으면 언제든지 추가 질문해주세요.

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

lcm0153님의 프로필 이미지

작성한 질문수

질문하기