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

kimx2725님의 프로필 이미지
kimx2725

작성한 질문수

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

pd.get_dummies(train[cols])와 (train, columns=cols) 차이가 궁금합니다.

해결된 질문

작성

·

345

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]를 사용한 것이 아닌가 싶어요

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

자세하게 설명해주셔서 잘 이해되었습니다! 🙂

마지막 설명에서 pd.get_dummies(test)가 자동으로 object 자료형만 변환해서 전체 데이터를 저장하는 것이라면,

cols가 object 자료형으로 지정된 상태에서는

test = pd.get_dummies(test)

test = pd.get_dummies(test, columns=cols)

위 두 코드의 결과가 같은 것이죠?

직접 해보니 출력 결과가 같은데 제가 이해한 것이 맞는지 확인 부탁드립니다!

image

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

결과가 같습니다 그런데 왜 columns=cols를 알려드렸냐면

숫자이지만 범주형이 확실할 때가 있어요! 그때 사용하기도 합니다 👍

kimx2725님의 프로필 이미지
kimx2725

작성한 질문수

질문하기