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

필주님의 프로필 이미지

작성한 질문수

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

기출(작업형2) 한 가지 방법으로 풀기 🆕 updated 2024.6

스케일링시 데이터 분리 없이 하는 방법

해결된 질문

24.06.16 20:44 작성

·

133

·

수정됨

0

dcols = train.select_dtypes(include='O').columns

ncols = train.select_dtypes(exclude='O').columns

위처럼 데이터를 인코딩과 스케일링 작업하기 전에 수치형, 오브젝트의 컬럼명을 변수에 미리 저장해 놓고, 아래처럼 분리 없이 스케일링과 인코딩 작업을 진행해도 되는지 궁금합니다. 동작은 제대로 하는 것 같아서 굳이 분리해야 하나 의문이 들어 질문 드립니다.

 

라벨인코딩과 스탠다드 스케일러를 둘 다

사용한다고 가정했을 때 입니다.

 

from sklearn.preprocessing import StandardScaler

scale = StandardScaler()

train[ncols] = scale.fit_transform(train[ncols])

test[ncols] = scale.fit_transform(test[ncols])

 

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()

 

for col in dcols:

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

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

 

답변 1

0

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

2024. 06. 16. 22:19

 

네 나누지 않아도 됩니다.

다만 사용법이 틀렸습니다 ㅠㅠ

스케일링과 레이블인코딩은 test에 적용시 fit_transform 이 아니라 transform만 필요합니다.

 

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

2024. 06. 17. 06:43

그러네요 학습을 두 번 적었네요..

라벨 인코딩이 아닌 원핫인코딩으로 할 경우에도 동일한거죠?

pd.get_dummies(train)

pd.get_dummies(test)

로 하면 오브젝트만 알아서 처리되니

라벨 인코딩 대신 원핫 인코딩으로 할 경우는

위 명령만 있으면 되는걸까요?

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

2024. 06. 17. 23:53

네 맞습니다.

필주님의 프로필 이미지

작성한 질문수

질문하기