데이터 전처리 ( 원 핫 인코딩 )
원 핫 인코딩
6. 원 핫 인코딩.ipynb
0.01MB
6. 원 핫 인코딩.html
0.27MB
원-핫 인코딩¶
- 원-핫 인코딩은 사람이 이해하는 언어를 컴퓨터가 쉽게 이해할 수 있도록 행렬로 표현한다
문자단어가 존재하는 곳은 1로 아닌 곳은 0으로 한다
- 구조를 행열 형태로 변경하여 데이터가 존재하는 곳에만 1로 표시하는 방법 방법
In [14]:
import pandas as pd
df = pd.DataFrame({
'city': ['부산', '부산', '인천', '제주', '서울'],
'number':['051', '051', '032', '064', '02'],
'int' : [1,2,3,4,5]
})
df
Out[14]:
city | number | int | |
---|---|---|---|
0 | 부산 | 051 | 1 |
1 | 부산 | 051 | 2 |
2 | 인천 | 032 | 3 |
3 | 제주 | 064 | 4 |
4 | 서울 | 02 | 5 |
In [15]:
df.dtypes
Out[15]:
city object number object int int64 dtype: object
In [16]:
# 문자 형태만 숫자로 변환한다
df_d = pd.get_dummies( df, dtype=int )
df_d
Out[16]:
int | city_부산 | city_서울 | city_인천 | city_제주 | number_02 | number_032 | number_051 | number_064 | |
---|---|---|---|---|---|---|---|---|---|
0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1 | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
2 | 3 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
3 | 4 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
4 | 5 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |
In [17]:
df = pd.DataFrame({
'fruit': ['망고', '바나나', '사과', '앵두'],
})
df
Out[17]:
fruit | |
---|---|
0 | 망고 |
1 | 바나나 |
2 | 사과 |
3 | 앵두 |
In [18]:
from sklearn.preprocessing import LabelEncoder
In [19]:
le = LabelEncoder()
le.fit( df['fruit'] )
df['number'] = le.transform(df['fruit'])
df
Out[19]:
fruit | number | |
---|---|---|
0 | 망고 | 0 |
1 | 바나나 | 1 |
2 | 사과 | 2 |
3 | 앵두 | 3 |
- 나중에 데이터들을 알고리즘에 넣고 실행을 할 경우 위와 같은 규칙을 가지고 있을때 예측 성능의 저하를 일으키게 된다.
- 그래서 지금과 같은 경우 one-hot encoding를 이용하는게 효율적이 된다.
- 레이블 인코딩을 이용하는 경우 트리계열의 알고리즘을 사용하고, 선형회귀와 같은 알고리즘을 이용할 경우 one-hot인코딩을 이용하는게 예측성능이 좋아질 수 있다
728x90
'BE > 머신러닝(ML)' 카테고리의 다른 글
[머신러닝] 데이터 전처리 ( 그룹 ) (0) | 2024.05.23 |
---|---|
[머신러닝] 데이터 전처리 ( 시계열 ) (0) | 2024.05.23 |
[머신러닝] 모델 생성 및 평가 (0) | 2024.05.23 |
[머신러닝] 데이터 전처리 ( 이상치, 중복 데이터, 문자 데이터 ) (0) | 2024.05.23 |
[머신러닝] 데이터 전처리( 결측값 대체, 치환, 삭제 ) (1) | 2024.05.22 |