데이터 인코딩
- 데이터 전처리는 알고리즘 만큼 중요. (Garbage in, Garbage out)
- 데이터는 문자열을 입력 값으로 허용 하지 않는다.
- 문자열을 인코딩하여 숫자로 변화 feature vectorization 기법
Label encoding
sklearn.preprocessing.LabelEncoder
from sklearn.preprocessing import LabelEncoder
items = ['TV', '냉장고', '전자렌지', '컴퓨터', '선풍기', '믹서', '믹서']
#labelEncoder를 객체로 생성한 후 .fit()과 transform()으로 label 인코딩 수행.
encoder = LabelEncoder()
encoder.fit(items)
labels = encoder.transform(items)
print('인코딩 변환값:', labels)
인코딩 변환값: [0 1 4 5 3 2 2]
print('인코딩 클래스:', encoder.classes_)
인코딩 클래스: ['TV' '냉장고' '믹서' '선풍기' '전자렌지' '컴퓨터']
print('디코딩 원본 값:', encoder.inverse_transform([4,5,2,0,1,1,3,3]))
디코딩 원본 값: ['전자렌지' '컴퓨터' '믹서' 'TV' '냉장고' '냉장고' '선풍기' '선풍기']
One Hot encoding
- class sklearn.preprocessing.OneHotEncoder(***, categories='auto', drop=None, sparse='deprecated', sparse_output=True, dtype=<class 'numpy.float64'>, handle_unknown='error', min_frequency=None, max_categories=None, feature_name_combiner='concat')
- 피처 값에 새로운 피처를 추가 후 고유 값에 해당되는 칼럼에 1 표시 하고 나머 지는 0 표시 하는 방식.
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder
import numpy as np
items = ['TV', '냉장고', '전자렌지', '컴퓨터', '선풍기','선풍기', '믹서', '믹서']
#먼저 숫자값으로 변환을 위해 LabelEncoder로 변환합니다.
encoder = LabelEncoder()
encoder.fit(items)
labels = encoder.transform(items)
#2차원 데이터로 변환합니다.
labels = labels.reshape(-1,1)
#원-핫 인코딩을 적용합니다.
oh_encoder = OneHotEncoder()
oh_encoder.fit(labels)
oh_labels = oh_encoder.transform(labels)
print('원-핫 인코딩 데이터')
print(oh_labels.toarray())
print('원-핫 인코딩 데이터 차원')
print(oh_labels.shape)
원-핫 인코딩 데이터
[[1. 0. 0. 0. 0. 0.]
[0. 1. 0. 0. 0. 0.]
[0. 0. 0. 0. 1. 0.]
[0. 0. 0. 0. 0. 1.]
[0. 0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0. 0.]
[0. 0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0. 0.]]
원-핫 인코딩 데이터 차원
(8, 6)
- 판다스에서 지원하는 원-핫 인코딩 API get_dummies()
import pandas as pd
df = pd.DataFrame({'item':['TV', '냉장고', '전자렌지', '컴퓨터', '선풍기','선풍기', '믹서', '믹서']})
pd.get_dummies(df)
'빅데이터 분석가 양성과정 > Python' 카테고리의 다른 글
Pydata 데이터 가져오기 (0) | 2024.07.10 |
---|---|
스케일링 / 표준화 / 정규화 (1) | 2024.07.10 |
결측값 처리 (0) | 2024.07.10 |
pandas - brazil ecommerce dataset ( 2 ) (0) | 2024.07.09 |
pandas - brazil ecommerce dataset ( 1 ) (0) | 2024.07.09 |