해결된 질문
작성
·
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])