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

sychang2000님의 프로필 이미지
sychang2000

작성한 질문수

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

피처 엔지니어링 코드 이래도 될까욧!?

해결된 질문

작성

·

189

1

# 피처 엔지니어링
cols1 = list(X_train.columns[X_train.dtypes == object]) # 범주형
cols2 = list(X_train.columns[X_train.dtypes != object]) # 수치형

Xc_train = X_train[cols1] # 범주형
Xc_test = X_test[cols1]
Xn_train = X_train[cols2] # 수치형
Xn_test = X_test[cols2]


Xc_train = pd.get_dummies(X_train[cols1])
Xc_test = pd.get_dummies(X_test[cols1])

from sklearn.preprocessing import RobustScaler

Ro = RobustScaler()
X_train[cols2] = Ro.fit_transform(X_train[cols2])
X_test[cols2] = Ro.transform(X_test[cols2])

Xn_train = X_train[cols2] # 수치형
Xn_test = X_test[cols2]

X_train = pd.concat([Xc_train, Xn_train], axis = 1)
X_test = pd.concat([Xc_test, Xn_test], axis = 1)
print(X_train)
print(X_test)

 

늘 빠른 답변 감사드려용

답변 1

1

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

네 그런데 혹시 모르니 cols2는 체크를 할 필요가 있어요 int, float외 다른 자료형이 있을 수도 있습니다.

인코딩의 경우 train과 test종류가 다르다면 합쳐서 인코딩 하고 다시 분할하는 것도 연습해주세요:)

sychang2000님의 프로필 이미지
sychang2000
질문자

train과 test의 종류가 다르다면 합쳐서 인코딩하라고 하셨는데 종류가 다르다는게 무슨 뜻인가용? train과 test의 열이 다르다는 건가요?

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

train에는 사과 딸기 포도가 있는데

test에는 딸기 수박이 있다면 어떻게 될까요?

fit을 통해 사과는 0, 딸기는 1, 포도는 2라고 사전을 만들고
transform을 통해서 train은 무사히 변환 되지만
test는 에러발생!!!! 수박을 알 수 없음!! 이라고 나옵니다.

이에 합쳐서 인코딩(사과는 0, 딸기는 1, 포도는 2, 수박은 3)을 진행하는 것을 말했어요

(추가적으로 합쳐서 진행할 경우 데이터 누수라는 부정적 영향이 있는데 이것은 빅분기에서는 다루진 않을 것 같아 생략하겠습니다)

sychang2000님의 프로필 이미지
sychang2000
질문자

감사합니다!!!! 이해가 팍팍 잘되네용!!!!

 

sychang2000님의 프로필 이미지
sychang2000

작성한 질문수

질문하기