728x90
반응형
SMALL
Encoding Categorical Values as Dummies
범주형 값을 부호화하는 전통적인 방법은 더미 변수로 만드는 것이다. 이 기법은 one-hot-encoding이라고도 한다. csv를 다운 받는다.
import pandas as pd
df = pd.read_csv('jh-simple-dataset.csv', na_values = ['NA', '?'])
pd.set_option('display.max_columns', 7)
pd.set_option('display.max_rows', 5)
display(df)
area 열은 숫자가 아니므로 원핫 인코딩으로 인코딩해야 한다. 영역 수와 개별 값을 표시한다. 이 경우 영역 범주형 변수에는 4개의 값만 있다.
areas = list(df['area'].unique())
print(f'Number of areas : {len(areas)}')
print(f'Areas : {areas}')
Number of areas : 4
Areas : ['c', 'd', 'a', 'b']
area 열에는 4개의 고유한 값이 있다. 이 더미 변수를 인코딩하기 위해 각각 영역 중 하나를 나타내는 4개의 열을 사용할 것이다. 각 행에 대해 하나의 열은 1의 값을 가지며 나머지는 0이다. 이러한 이유로 이러한 유형의 인코딩을 원핫 인코딩이라고 부르기도 한다. 다음 코드는 "a"에서 "d"까지의 값을 인코딩하는 방법을 보여준다. 값 A는 [1,0,0,0]이 되고 값 B는 [0,1,0,0,0]이 된다.
dummies = pd.get_dummies(['a', 'b', 'c', 'd'], prefix = 'area')
print(dummies)
이제 실제 열을 인코딩할 수 있다.
dummies = pd.get_dummies(df['area'], prefix = 'area')
print(dummies[0:10]) # show the first 10
새로운 더미 / 하나의 핫 인코딩된 값이 유용하려면 해당 값을 데이터 세트에 다시 병합해야 한다.
df = pd.concat([df, dummies], axis = 1)
area 열을 인코딩하기 위해 더미들을 데이터 프레임에 다시 병합할 필요가 있다.
pd.set_option('display.max_columns', 0)
pd.set_option('display.max_rows', 10)
display(df[['id', 'job', 'area' , 'income', 'area_a', 'area_b', 'area_c', 'area_d']])
일반적으로 데이터 프레임이 신경망에 대해 전체 값이 숫자가 되도록 하는 것이 목표이기 때문에 원래 area 열을 제거한다.
pd.set_option('display.max_columns', 0)
pd.set_option('display.max_rows', 5)
df.drop('area', axis = 1, inplace = True)
display(df[['id', 'job', 'income', 'area_a', 'area_b', 'area_c', 'area_d']])
728x90
반응형
LIST
'DNN with Keras > Machine Learning' 카테고리의 다른 글
그룹화, 정렬 및 섞기 (1) (0) | 2023.07.27 |
---|---|
타겟 인코딩 (Target Encoding) (0) | 2023.07.27 |
범주형 (Categorical) 및 연속형 (Continuous) 값 (0) | 2023.07.27 |
데이터프레임 저장 (0) | 2023.07.27 |
데이터프레임 전처리 (0) | 2023.07.27 |