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 |
결과는 다음과 같이 나온다.

'배운 것 > Python' 카테고리의 다른 글
| [pandas] 기존 데이터 프레임에서 열(column)을 삭제한 후, 새로운 데이터 프레임으로 저장하기 (0) | 2021.09.14 |
|---|---|
| [pandas] DataFrame loc[ ] 연산자 - Index(인덱스) (0) | 2021.07.20 |
| [numpy] numpy.select(conditionlist, choicelist, default=) (0) | 2021.07.20 |
| [기초 문법] dict()로 딕셔너리 만들기 (0) | 2021.03.31 |
| [기초 문법] input().split() (0) | 2021.03.31 |