해결된 질문
작성
·
315
0
원핫 인코딩 코드에서 괄호 안에 [cols]를 쓸 때와 columns=cols를 쓸 때의 차이가 궁금합니다.
3-4 Feature engineering에서와 3-6 Regression에서 작성법이 달라서요.
3-6 Regression에서는 train[cols]로 썼더니 에러가 나네요ㅠ
# 3-4 Feature engineering
c_train[col] = le.fit_transform(c_train[col])
c_test[col] = le.transform(c_test[col])
# 3-6 Regression
train = pd.get_dummies(train, columns=cols)
test = pd.get_dummies(test, columns=cols)
답변 1
1
데이터 전처리에서는 회귀와 분류가 차이가 나지 않습니다.
c_train[col] = le.fit_transform(c_train[col])
위 코드를 자세히 보면 변환 후 대입받는 c_train[col] 도 컬럼을 똑같이 지정하고 있어요 스케일링은 컬럼의 변화가 없어요
그런데 원핫인코딩은 결과가 컬럼의 수가 치이가 납니다. 많이 늘어나게 되죠!
따라서 아래와 같은 방식으로 사용하면 자동으로 object자료형만 변환해서 전체 데이터를 다시 test에 저장해주고
test = pd.get_dummies(test)
컬럼을 지정하면 지정된 컬럼만 변환하고 전체 데이터를 반환해 줍니다.
test = pd.get_dummies(test, columns=cols)
결과 전 후를 print()으로 출력해보길 권장합니다.
train[cols]에서 에러가 난 것은 추측 컨데 대입받을 때도train[cols]를 사용한 것이 아닌가 싶어요
자세하게 설명해주셔서 잘 이해되었습니다! 🙂
마지막 설명에서 pd.get_dummies(test)가 자동으로 object 자료형만 변환해서 전체 데이터를 저장하는 것이라면,
cols가 object 자료형으로 지정된 상태에서는
test = pd.get_dummies(test)
test = pd.get_dummies(test, columns=cols)
위 두 코드의 결과가 같은 것이죠?
직접 해보니 출력 결과가 같은데 제가 이해한 것이 맞는지 확인 부탁드립니다!