해결된 질문
작성
·
16
0
안녕하세요 라벨인코딩 시 질문이 있어 글 남깁니다.
첫번째질문
cols에 select_dtypes()로 컬럼명 담을 때,
cols = train.select_dtypes(include='object')
cols = train.select_dtypes(include='object').columns
for col in cols:
le = LabelEncoder()
train[col] = le.fit_transform(train[col])
...
...
첫 번쩌 cols와 두 번째 cols 중 둘 다 상관 없나요? 아니면 두 번째로 해야 하나요??
두번째질문
그리고 (아직까진 시험에는 나온 적은 없는 걸로 압니다만)
train.describe(include='object')
이처럼 범주형 변수 유니크 값 확인 시,
train
과 test
의 유니크 값이 다르면 라벨인코딩을 진행하는 것으로 알고 있는데요. 어쩔 땐 concat
으로 합치고 후 원핫인코딩 후 다시 분리하라고 하는데,
그냥 유니크 값이 다르면 라벨인코딩 진행을 바로 하면 될까요? 강사님 강의 중 concat 사용하는 부분이 있었던 것 같은데 못 찾고 있어서 질문 남깁니다..
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다.
tmdwjsofficial님의 질문에 대해 답변드립니다.
select_dtypes()
로 컬럼명을 담을 때 두 가지 방식 모두 사용할 수 있지만, 일반적으로 train.select_dtypes(include='object').columns
를 사용하는 것이 적절합니다. 이유는 select_dtypes()
는 해당 데이터 타입의 모든 데이터프레임을 반환하기 때문에, .columns
를 사용하여 컬럼명 리스트만 담아주는 것이 더 명확하며 코드를 깔끔하게 유지할 수 있습니다.
라벨 인코딩과 원핫 인코딩의 선택은 보통 범주형 데이터의 유니크 값의 개수와 그 의미에 따라 결정됩니다. 만약 train
과 test
데이터셋의 유니크 값이 다르다면, 일반적으로 라벨 인코딩을 사용하여 각 범주를 숫자로 변환하는 것이 일반적입니다.
하지만, 원핫 인코딩을 사용하고 싶은 경우에는, concat
으로 데이터프레임을 합친 후 인코딩을 진행하는 방법도 가능합니다. 이렇게 하면 두 데이터셋 간의 범주가 일치하게 처리됩니다. 이는 각각의 카테고리가 모델의 입력으로 동일하게 유지될 수 있도록 하는 효과를 가집니다. 따라서, 라벨 인코딩을 바로 사용해도 문제는 없습니다만, 상황에 따라서 두 데이터셋의 범주 간 일관성을 위해 concat
을 사용할 수 있습니다.
관련해서 도움이 될 수 있는 기존 답변 URL도 함께 확인해 보시기 바랍니다:
- 피처엔지니어링-n/c_train데이터로 분리 후 다시 컬럼 나열해주는 이유?
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.