OrdinalEncoder와 OneHotEncoder의 차이

ysk1230·2023년 4월 5일
0

PYTHON

목록 보기
7/7

OrdinalEncoder와 OneHotEncoder는 범주형 데이터를 수치형 데이터로 변환하는 인코딩 방법 중 두 가지입니다. 그러나 두 방법 간에는 중요한 차이점이 있습니다.

OrdinalEncoder는 범주형 데이터의 카테고리를 정수 값으로 매핑합니다. 예를 들어, "red", "green", "blue"와 같은 3개의 카테고리가 있다면, OrdinalEncoder는 각 카테고리를 각각 0, 1, 2와 같은 정수 값으로 변환합니다. 이 방법은 카테고리 간의 상대적인 순서가 있는 경우에 적합합니다.

OneHotEncoder는 범주형 데이터의 카테고리를 이진 벡터로 매핑합니다. 예를 들어, "red", "green", "blue"와 같은 3개의 카테고리가 있다면, OneHotEncoder는 각 카테고리를 각각 [1,0,0], [0,1,0], [0,0,1]과 같은 이진 벡터로 변환합니다. 이 방법은 카테고리 간의 상대적인 순서가 없는 경우에 적합합니다.

import pandas as pd
from sklearn.preprocessing import OrdinalEncoder, OneHotEncoder
#예시 데이터 생성
df = pd.DataFrame({
    "color": ["red", "green", "blue", "red", "blue", "green"]
})

#Ordinal Encoding

ordinal_encoder = OrdinalEncoder()
df["ordinal_encoded"] = ordinal_encoder.fit_transform(df[["color"]])
print(df)

#One-Hot Encoding

one_hot_encoder = OneHotEncoder(sparse=False)
one_hot_encoded = one_hot_encoder.fit_transform(df[["color"]])
df_one_hot = pd.DataFrame(one_hot_encoded, columns=one_hot_encoder.get_feature_names())
print(df_one_hot)

0개의 댓글

관련 채용 정보