해결된 질문
작성
·
23
0
전처리 및 피처엔지니어링 단계에서
범주형 컬럼과 수치형 컬럼을 굳이 4개의 데이터로 나누지 않고
var1 = ['A', 'B', 'C'] (범주형 컬럼 리스트)
var2 =['D', 'E', 'F'] (수치형 컬럼 리스트)
from sklearn.preprocessing import MinMaxScaler, LabelEncoder
col = train.select_dtypes(exclude='O').columns
cols = train.select_dtypes(include='O').columns
scaler = MinMaxScaler()
train[col] = scaler.fit_transform(train[col])
test[col] = scaler.fit_transform(test[col])
# 범주형 변수 인코딩
for i in cols:
le =LabelEncoder()
train[i] = le.fit_transform(train[i])
test[i] = le.transform(test[i])
이런식으로 해도 될까요?
추가적으로 수치형 데이터의 스케일링은 필수가 아닌가요?(일부 회차에서 수치형 데이터는 스케일링하지 않아서 여쭤봅니다!)
답변 2
0
test에는 transform만 적용합니다.
test[col] = scaler.fit_transform(test[col]) -> test[col] = scaler.transform(test[col])
그 외에는 맞아요!
인코딩은 필수, 수치형은 선택입니다.
우선 시간이 얼마 없으므로
작업형2는 아래와 같이 진행해 주세요
꿀팁 섹션 - 작업형2 한가지 방법으로 풀기(기본)
꿀팁 섹션 - 인코딩 시 에러가 발생한다면(심화)
기출풀기
0
안녕하세요, 인프런 AI 인턴입니다.
JY Park님의 질문에 대해 답변드리겠습니다. 전처리 및 피처 엔지니어링 과정에서 데이터의 분할 여부와 관련하여, 특정 작업에 꼭 필요한 경우가 아니라면 데이터를 굳이 여러 조각으로 나누지 않고도 전처리 작업을 수행할 수 있습니다. 지금 제안하신 방식대로 각 작업의 특성에 맞게 작업을 수행하면 됩니다.
수치형 데이터 스케일링: 수치형 데이터를 스케일링하는 것은 반드시 필수적인 것은 아닙니다. 다만, 스케일링은 특정 알고리즘(예: K-최근접 이웃, SVM, 신경망 등)에서 학습의 효율성과 성능을 개선하는 데 도움을 줄 수 있습니다. 특히, 모델의 입력 피처들의 값 범위가 크게 달라서 각 피처가 모델에 미치는 영향이 균형되지 않은 경우 스케일링을 고려할 수 있습니다. 하지만 트리 기반 모델(예: 랜덤 포레스트)에서는 스케일링이 필수가 아닙니다.
범주형 변수 인코딩: 범주형 변수에 대해서는 본래의 텍스트 데이터를 모델이 인식할 수 있는 수치 형태로 변환하는 과정이 필요합니다. LabelEncoder는 범주형 데이터를 0부터 n-1까지의 정수로 인코딩할 때 사용됩니다. 각각의 범주가 특정 순서를 가진 것으로 취급될 수 있는 경우에 유용합니다. 여러분의 코드가 올바른 방법으로 범주형 데이터를 변환하고 있습니다.
따라서 축약해서 정리하면, JY Park님이 제안하신 전처리 방법이 적절하게 잘 설정된 것으로 보입니다. 스케일링이나 벡터화가 되는 방식도 구현 의도에 따라 유연하게 조정 가능합니다.
관련하여 데이터 전처리 과정에서 자주 사용되는 방법과 주의사항에 대한 구체적인 예시는 다음의 링크를 참조하시면 좋습니다:
위 링크는 데이터 전처리 단계에서의 다양한 선택사항과 그에 관한 실습 예시에 대한 설명을 포함하고 있으며, 여러분의 질문에 대한 실질적 이해를 심화시키는 데 도움을 줄 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
감사합니다!