๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ '๊ธ์'๋ฅผ ์ดํดํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋ฌธ์๋ก ๋ ๋ฒ์ฃผํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋์ ์ซ์๋ก ๋ณํํด์ค์ผ ํ๋ค(Ex. "์ฌ๊ณผ", "๋ฐ๋๋" Error!)
์ด ์์ ์ ์ธ์ฝ๋ฉ(Encoding)๋ผ๊ณ ํ๋๋ฐ ๋ํ์ ์ธ ๋ ๊ฐ์ง ๋ฐฉ์์ ์์๋ณด์. ๐ ๐ข
[1, 0][0, 1]ColumnTransformer๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฅผ ํ ๋ฒ์ ์ฒ๋ฆฌํ ์ ์๋ค.import pandas as pd
import numpy as np
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler, OneHotEncoder, OrdinalEncoder
# ๋ฐ์ดํฐ ์์ฑ
data = {
'์์นํ_ํน์ง': [10, 20, 30, 40, 50], # ๋ณํ X (๊ทธ๋๋ก ๋ ์์ )
'๋ฒ์ฃผํ_ํน์ง': ['A', 'B', 'A', 'C', 'B'], # ๋ณํ O (์ธ์ฝ๋ฉ ํ์)
'๊ทธ๋๋ก_์ ์ง': [1, 0, 1, 0, 1] # ๋ณํ X
}
df = pd.DataFrame(data)
print(df)

OrdinalEncoder๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ์ฃผํ_ํน์ง ์ปฌ๋ผ๋ง ์ซ์๋ก ๋ฐ๊ฟ# ColumnTransformer ์ ์
preprocessor = ColumnTransformer(
transformers=[
# (์ด๋ฆ, ๋ณํ๊ธฐ ๊ฐ์ฒด, [์ ์ฉํ ์ปฌ๋ผ๋ช
๋ฆฌ์คํธ])
('cat', OrdinalEncoder(), ['๋ฒ์ฃผํ_ํน์ง'])
],
remainder='passthrough' # ์ค์! ์ง์ ํ์ง ์์ ๋๋จธ์ง ์ปฌ๋ผ์ ๋ฒ๋ฆฌ์ง ๋ง๊ณ ํต๊ณผ์์ผ๋ผ
)
print(preprocessor)
# ๋ณํ ์ํ
X_transformed = preprocessor.fit_transform(df)
print(X_transformed)
# ๊ฒฐ๊ณผ ํด์
# [[ 0. 10. 1.] -> A๋ 0์ผ๋ก ๋ณํ
# [ 1. 20. 0.] -> B๋ 1๋ก ๋ณํ
# [ 0. 30. 1.] -> A๋ 0
# [ 2. 40. 0.] -> C๋ 2๋ก ๋ณํ
# [ 1. 50. 1.]]

๋ฒ์ฃผํ_ํน์ง ์ปฌ๋ผ์ด A, B, C 3๊ฐ์ง ๊ฐ์ ๊ฐ์ง๋ฏ๋ก 3๊ฐ์ ์๋ก์ด ์ปฌ๋ผ์ผ๋ก ์ชผ๊ฐ์ง๋ค.from sklearn.preprocessing import OneHotEncoder
# OneHotEncoder๋ก ๋ณ๊ฒฝ
preprocessor = ColumnTransformer(
transformers=[
('cat', OneHotEncoder(), ['๋ฒ์ฃผํ_ํน์ง'])
],
remainder='passthrough'
)
X_transformed = preprocessor.fit_transform(df)
print(X_transformed)
# ๊ฒฐ๊ณผ ํด์
# [[ 1. 0. 0. 10. 1.] -> A: [1, 0, 0]
# [ 0. 1. 0. 20. 0.] -> B: [0, 1, 0]
# [ 1. 0. 0. 30. 1.] -> A: [1, 0, 0]
# [ 0. 0. 1. 40. 0.] -> C: [0, 0, 1]
# [ 0. 1. 0. 50. 1.]]

๊ฒฐ๊ณผ ๋ถ์
์์ 3๊ฐ ์ปฌ๋ผ(1. 0. 0.)์ OneHotEncoder๊ฐ ๋ง๋ A, B, C ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ์ปฌ๋ผ์ด๋ค.
๋ค์ 2๊ฐ ์ปฌ๋ผ(10. 1.)์ passthrough๋ก ํต๊ณผ๋ ์๋์ ์์นํ ๋ฐ์ดํฐ์ด๋ค.
์ฐจ์ ์ฆ๊ฐ: ์๋ 3๊ฐ์๋ ์ปฌ๋ผ์ด ์ด 5๊ฐ(์ํซ 3๊ฐ + ์์น 2๊ฐ)๋ก ๋์ด๋จ.
| ํน์ง | Label (Ordinal) Encoding | One-Hot Encoding |
|---|---|---|
| ๋ณํ ๋ฐฉ์ | A โ 1, B โ 2 (์ ์ ๋ณํ) | A โ [1,0], B โ [0,1] (๋ฒกํฐ ๋ณํ) |
| ์ฅ์ | ์ฐจ์์ด ์ฆ๊ฐํ์ง ์์ | ์์ ์๊ณก ์์ |
| ๋จ์ | ์ซ์์ ํฌ๊ธฐ(์์)๊ฐ ๋ชจ๋ธ์ ์ํฅ์ ๋ฏธ์นจ | ์ปฌ๋ผ ์ ์ฆ๊ฐ(๋ฉ๋ชจ๋ฆฌ ๋ถ๋ด) |
| ์ฌ์ฉ์ฒ | ์์ด ๋ฐ์ดํฐ(๋ฑ๊ธ, ํ์ ), ํธ๋ฆฌ ๋ชจ๋ธ(Random Forest, XGBoost) | ๋ช ๋ชฉ ๋ฐ์ดํฐ(์ฑ๋ณ, ์ง์ญ), ์ ํ ๋ชจ๋ธ(Regression, SVM) |