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

hyeonseung11님의 프로필 이미지

작성한 질문수

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

일원배치법 (feat. 정규성, 등분산)

작업형 2. 스케일링 질문

해결된 질문

작성

·

252

0

5회 작업형 2번 질문입니다.

수치형 스케일링과 범주형 변수 원핫 인코딩은 같이 사용할 수 없나요 ?

n_cols=['year', 'mileage', 'tax', 'mpg', 'engineSize']

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

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

c_cols = ['model', 'transmission', 'fuelType' ]

train=pd.get_dummies(train[c_cols])

test =pd.get_dummies(test[c_cols])

이렇게 해버리면 수치형 데이터를 스케일링해도 해당 값이 사라지고, 원핫 인코딩된 데이터만 남습니다.

스케일링 코드를 뒤쪽으로 옮겨가도, 이미 사라진 수치형 데이터 컬럼명을 사용해서 에러가 뜹니다.

그리고 강의에서는

train = pd.get_dummies(train)

test = pd.get_dummies(test)

으로 진행하고

수치형 데이터를 아예 스케일링 안하고 넘어가셨는데, 어떻게 판단해서 해야하나요?

 

답변 1

0

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

1주 앞둔 상황에서 스케일링이 익숙치 않으면

인코딩은 필수로 진행해주고 스케일링은 패스해도 됩니다.

랜덤포레스트나 라이트지비엠 등 트리계열 모델 사용하면 스케일링해도 대소관계 변함이 없어 효과가 크지 않아요 안하셔도 됩니다. 🙌

 

범주형 선택한 데이터 원핫인코딩 결과만 train에 담고 있어요

이 코드를 train=pd.get_dummies(train)로 변경하세요

train=pd.get_dummies(train[c_cols])

test =pd.get_dummies(test[c_cols])