인프런 커뮤니티 질문&답변
머신러닝 인코딩(labelencoder)관련 질문
작성
·
11
·
수정됨
0
작업형 2 머신러닝 모의2번 문제에서 labelencoder할때, 명령어가 le = LabelEncoder()로 지정하고 아래와 같이 transform할때 fit을 넣고 다음에는 안넣는데, 추측하기로는 train 데이터에서 object 유니크 수를 파악하고 이에 맞는 것으로 변형하기 때문에 fit을 쓴것 같습니다. 그렇다면 trian이랑 test랑 유니크 수가 다르다고 하면 아래와 같이 쓰면 안되지 않나요? 아니면 알아서 잘 수치화가 진행되는걸까요? 일전에 강의에서는 train과 test에서 유니크 수가 다르면, 두 데이터를 상하로 합쳐서 같이 적용하고 나눈다고 들었어서 여쭤봅니다.
train[col] = le.fit_transform(train[col])
test[col] = le.transform(test[col])
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 이승현님, 머신러닝에서 사용하신 LabelEncoder에 관한 질문을 주셨습니다.
LabelEncoder는 특정 열의 범주형 데이터를 수치형으로 변환하여 모델에 입력할 수 있도록 해주는 방법입니다. 말씀하신 대로, fit_transform은 데이터를 인코딩할 때, 해당 데이터에 맞는 유니크한 클래스들을 기반으로 레이블을 설정합니다. 주로 학습 데이터(train)에 대해서 fit_transform을 사용하여 각 범주에 대해 고유의 수치 값을 할당하고, 테스트 데이터(test)에 대해 transform만을 사용하여 동일한 수치 매핑을 적용합니다.
질문에서 언급하신 “train과 test 간 유니크 수 차이”는 중요한 요소입니다. 만약 학습 데이터에서 보지 못한 새로운 클래스가 테스트 데이터에 포함된다면, LabelEncoder는 KeyError를 발생시킵니다. 이를 방지하기 위해, 학습 데이터와 테스트 데이터를 처음에 합쳐서 fit을 하고 다시 분할하여 처리하는 방법을 사용할 수 있습니다. 이렇게 하면 데이터를 인코딩할 때 모든 유니크 클래스가 고려되므로 안전합니다.
관련된 기존 답변과 추가 정보는 아래 링크들을 참고해 주세요:
위의 자료들은 데이터 사이언스 및 머신러닝에서 레이블 인코딩을 다루는 데 있어 유용한 정보를 제공합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





