Machine Learning

[sklearn] 데이터 인코딩

주댕이 2024. 3. 5. 14:51

# 데이터 인코딩

  • 데이터를 모델이 이해할 수 있는 형태로 변환하는 과정
  • 주로 범주형 데이터를 수치형 데이터로 변환하는 과정을 말한다.

 

# 레이블 인코딩(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