인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Inflearn Community Q&A

sychang2000's profile image
sychang2000

asked

[After-work activities] Big Data Analysis Engineer Practical (Work-type 1,2,3)

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

Resolved

Written on

·

220

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)

 

늘 빠른 답변 감사드려용

python머신러닝빅데이터pandas빅데이터분석기사

Answer 1

1

roadmap님의 프로필 이미지
roadmap
Instructor

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

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

sychang2000님의 프로필 이미지
sychang2000
Questioner

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

roadmap님의 프로필 이미지
roadmap
Instructor

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

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

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

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

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

sychang2000님의 프로필 이미지
sychang2000
Questioner

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

 

sychang2000's profile image
sychang2000

asked

Ask a question