반응형

 

 

 

참고 데이터

데이콘 - 신용카드 사용자 연체 예측

 

 

전처리 전 데이터셋 (train.csv)

 

숫자 밖에 못 알아듣는 멍청한 모델 학습을 위해 'income_type'과 같은 범주형(category) 컬럼들을 Encoding 해야 한다.

 

 

 

 

 

 

 

 

더미형 변수(Dummy Variable)

import pandas as pd
train = pd.get_dummies(train)
train
 

'pandas' 라이브러리의 'get_dummies' method를 사용하면 더미형 변수로 쉽게 변환할 수 있다.

 

'income_type' 컬럼이 더미형 변수로 변환된 것을 확인할 수 있다.

위에서 확인할 수 있듯이, 더미형 변수는 범주형 변수를 숫자형 변수로 만들어준다.

 

 

 

 

 

 

 

숫자형 컬럼, 범주형 컬럼 분류 (Numeric, Categorical Column Classification)

numerical = train.dtypes[train.dtypes != "object"].index.tolist()
print("Number of Numerical features: ", len(numerical))

categorical = train.dtypes[train.dtypes == "object"].index.tolist()
print("Number of Categorical features: ", len(categorical))
 

print문을 실행하면 'tolist()' 함수에 의해 변환된 list의 길이가 출력된다. (list의 길이는 요소의 개수를 의미한다.)

 

 

 

categorical

 

 

 

 

 

 

 

 

인코딩 (Encoding)

 

위에서 더미형 변수로 변환한 것도 인코딩이다.

추가로 라벨 인코딩(Label Encoding)을 활용하는 방법을 정리한다.

 

라벨 인코딩은 범주의 개수(n)에 맞게 0~(n-1)을 할당해 주는 인코딩이다.

쉽게 말하면 0부터 번호를 매겨준다.

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
le.fit(train.income_type)
train['income_type']=le.transform(train.income_type)
 

 

범주형 특성이었던 'income_type'을 Label Encoding한 결과는 아래와 같다.

인코딩하지 않은 'edu_type'과 대조된다.

 

 

위에서 활용한 범주형 특성 리스트 추출을 활용해, 모든 범주형 특성을 한 번에 인코딩해 보자.

from sklearn.preprocessing import LabelEncoder

categorical = train.dtypes[train.dtypes == "object"].index.tolist() #범주형 특성 리스트 저장
le = LabelEncoder() #LabelEncoder 모듈을 'le'객체에 저장

for category in categorical :
    le.fit(train[category])
    train[category]=le.transform(train[category])
 

 

 

 

 

 

 

 

 

 

 

반응형

+ Recent posts