# 데이터 인코딩
- 데이터를 모델이 이해할 수 있는 형태로 변환하는 과정
- 주로 범주형 데이터를 수치형 데이터로 변환하는 과정을 말한다.
# 레이블 인코딩(Label Encoding)
- 범주형 데이터를 숫자형으로 변환하는 가장 간단한 방법 중 하나
- LabelEncoder 클래스를 사용하여 수행할 수 있다.
from sklearn.preprocessing import LabelEncoder
items=['TV','냉장고','전자레인지','컴퓨터','선풍기','선풍기','믹서','믹서']
# LabelEncoder를 객체로 생성한 후, fit()과 transfrom()으로 label 인코딩 수행
# 종속변수에 적용
# 수치 예측 할 때, LabelEncoder 사용 X
# 범주 예측: 예시) 양성 / 음성 / 잘 모르겠음
encoder = LabelEncoder()
encoder.fit(items)
labels = encoder.transform(items)
labels
- 문자열 값이 어떤 숫자 값으로 인코딩됐는지 알아보기
encoder.classes_
- 인코딩 값을 디코딩하기
encoder.inverse_transform([4, 5, 2])
# 원-핫 인코딩(One-Hot Encoding)
- 범주형 데이터를 이진 형태로 표현하는 인코딩 방식
- 각 범주에 대해 해당하는 열은 1로 표시하고, 나머지 열은 0으로 표시한다.
- OneHotEncoder 클래스를 사용하여 수행할 수 있다.
from sklearn.preprocessing import OneHotEncoder
import numpy as np
items=['TV','냉장고','전자레인지','컴퓨터','선풍기','선풍기','믹서','믹서']
# 2차원 ndarray로 변환하기
items = np.array(items).reshape(-1, 1)
print(items.shape)
# 원-핫 인코딩 적용하기
oh_encoder = OneHotEncoder()
oh_encoder.fit(items)
oh_labels = oh_encoder.transform(items)
# OneHotEncoder로 변환한 결과는 희소행렬이므로 toarray()를 이용하여 밀집 행렬로 변환하기
oh_labels.toarray()
# 더미 변수화(Dummy Encoding)
- 범주형 변수를 더미 변수로 변환하는 방법
- 범주의 수만큼 새로운 이진 변수를 만든다.
- 레이블 인코딩과 유사하지만, 각 범주의 대표 변수를 하나씩 만드는 대신 모든 범주에 대해 이진 변수를 만든다.
- 판다스의 get_dummies() 함수를 사용하거나 OneHotEncoder를 이용하여 수행할 수 있다.
import pandas as pd
df = pd.DataFrame({'item':['TV','냉장고','전자레인지','컴퓨터','선풍기','선풍기','믹서','믹서'] })
pd.get_dummies(df)
728x90
'Machine Learning' 카테고리의 다른 글
[ML] Feature Engineering (0) | 2024.03.05 |
---|---|
[sklearn] GridSearchCV (0) | 2024.03.05 |
[ML] 하이퍼 파라미터 튜닝 (0) | 2024.03.05 |
[sklearn] Stratified K 폴드 (2) | 2024.03.05 |
[sklearn] K 폴드 교차 검증 (0) | 2024.03.05 |