배운 것/Python

[pandas] get_dummies : One-hot encoding(원핫 인코딩)

MOR1ATY 2021. 7. 20. 16:56

One-hot encoding(원핫 인코딩)이란, 

 

예를 들어 월~일요일이 0~6까지의 숫자로 표현되어 있다면 의도치 않게 학습시에 큰 숫자에 의미가 부여돼 학습이 왜곡될 수 있는데, 월~일요일에 대한 열을 모두 따로 만들어 그런 요소를 제거하는 것이다. 결국 1개의 열이 7개의 열로 늘어난다는 의미이다. ex) 월요일 열에 0이면 월요일이 아닌것, 1이면 월요일 인것

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 새로운 column 'PURPOSE' 생성
conditionlist = [
    (credit_df['NEW_CAR'] == 1),
    (credit_df['USED_CAR'] == 1),
    (credit_df['FURNITURE'] == 1),
    (credit_df['RADIO/TV'] == 1),
    (credit_df['EDUCATION'] == 1),
    (credit_df['RETRAINING'] == 1)]
 
choicelist = ['New Car', 'Used Car', 'Furniture', 'Radio/TV', 'Education', 'Retraining']
 
credit_df['PURPOSE'] = np.select(conditionlist, choicelist, default='Other')
 
credit_df.drop(['NEW_CAR', 'USED_CAR', 'FURNITURE', 'RADIO/TV', 'EDUCATION', 'RETRAINING'], axis=1, inplace=True)
 
credit_df.head()
 
# 새로운 column 'GENDER' 생성
conditionlist = [
    (credit_df['MALE_DIV']==1),
    (credit_df['MALE_SINGLE']==1),
    (credit_df['MALE_MAR_or_WID']==1)]
choicelist = ['Male', 'Male', 'Male']
 
credit_df['GENDER'] = np.select(conditionlist, choicelist, default='Female')
credit_df.drop(['MALE_DIV', 'MALE_SINGLE', 'MALE_MAR_or_WID'], axis=1, inplace=True)
 
# 새롭게 생성한 columns 'PURPOSE', 'GENDER'에 대하여 원핫 인코딩 실시
pd.get_dummies(credit_df)
 
cs

 

결과는 다음과 같이 나온다.