강의

멘토링

로드맵

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

92200607님의 프로필 이미지
92200607

작성한 질문수

기출3회 작업형 2 피처 엔지니어링 전 수치/범주형 데이터 분리

작성

·

60

·

수정됨

0

기출 3회 작업형 2에서

 

피처엔지니어링 전 df.select_dtypes(exclude = "o").copy() .... 로 트레인 데이터와 테스트 데이터를 수치와 범주형으로 나눈 후

  1. 수치형 MinMaxScaler

  2. 범주형 원핫인코딩으로 각각 피처링을 하셨는데

이때 수치형을 보면 cols = ["A", "B"...]로 오브젝트형을 지정하셨더라구요.

 

피처엔지니어링때 cols =[ ] 를 별도 지정하더라도 위 데이터를 나누는 과정이 필수일까요??

 

아래처럼 해도 되면 concat도 필요없을거 같아서요.

예) df.select_dtypes(exclude = "o").copy() << 이과정없이

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()

cols = ['Age', 'FamilyMembers']

train[cols] = scaler.fit_transform(train[cols])

test[cols] = scaler.transform(test[cols])

 

from sklearn.preprocessing import LabelEncoder

cols = ['Nationality']

for col in cols:

le = LabelEncoder()

train[col] = le.fit_transform(train[col])

test[col] = le.transfrom(test[col])

 

답변 1

0

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

질문하신 내용에 대해 답변드리겠습니다. 데이터 전처리 과정에서 수치형 및 범주형 데이터를 별도로 나누는 과정은 필수적인 것은 아니며, 전처리를 수행하는 방법론에 따라 다를 수 있습니다. 직접 코드 예제를 통해서 설명해주신 것처럼, MinMaxScaler나 LabelEncoder 등을 사용할 때 특정 컬럼을 직접 지정하여 전처리를 수행하는 것은 가능합니다.

다만, 데이터를 분리하는 이유는 각 유형의 데이터에 적합한 전처리 방법을 적용하기 위함입니다. 수치형 데이터와 범주형 데이터는 그 특성이 다르기 때문에, 전처리 방식도 다르게 접근해야 합니다. 따라서, 큰 데이터셋에서 모든 특성(컬럼)을 미리 알고 있다면, cols를 통해 직접 지정하는 방식으로 진행할 수 있으나, 모든 컬럼의 데이터 유형을 파악하기 어렵거나, 범용적으로 적용 가능한 전처리 파이프라인을 구축하고자 한다면 데이터를 미리 분리하는 작업이 유용할 수 있습니다.

즉, 상황과 필요에 따라 전처리 과정을 유연하게 조정하는 것이 좋습니다. 질문하신 경우처럼 특정 필드만 전처리하는 경우에는 굳이 데이터를 분리하지 않고, 직접 컬럼을 지정해 처리하는 방법이 효율적일 수 있습니다.

데이터 처리 과정에서 가장 중요한 것은 최종적으로 모델의 성능에 긍정적인 영향을 주는지 여부입니다. 따라서, 다양한 전처리 방식을 시도해보고, 그 결과를 비교해보는 것도 좋은 방법 중 하나라고 할 수 있습니다.

92200607님의 프로필 이미지
92200607

작성한 질문수

질문하기