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