Scaler

label_encoder

import pandas as pd
from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()
le.fit(df['A'])
df = pd.DataFrame({
    "A": ["a", "b", "c", "a", "b"],
    "B": [1, 2, 3, 1, 0]
})

df['le_A'] = le.transform(df['A']) # a -> 0, b -> 1. c -> 2
le.transform(['a', 'b'])
le.fit_transform(df["A"])
le.inverse_transform([1, 2, 2, 2]) # 0 -> a, 1 -> b, 2 -> c

min-max-scaling

1. 수식

xscaled=xxminxmaxxminx_{scaled} = \frac{x - x_{min}}{x_{max} - x_{min}}

2. 목적

데이터를 0 ~ 1 사이 범위로 스케일링

3. 장점

데이터가 0에서 1 사이로 제한이 되기 때문에 에러 범위도 제한이 된다. (오버플로 방지). 그래서 주로 카메라 픽셀 데이터 (0, 255) 같이 범위가 제한된 곳에서 사용하면 좋음

standard scaler

1. 수식

z=xμσz = \frac{x - \mu}{\sigma}

여기서 μ\mu는 평균, σ\sigma는 표준편차입니다.

2. 목적

평균을 0, 표준 편차를 1로 만듬

3. 장점

일반적인 경우의 데이터(엑셀데이터)에 많이 사용

Robust Scaler

1. 수식

xscaled=xmedianIQRx_{scaled} = \frac{x - \text{median}}{IQR}

여기서 IQR=Q3Q1IQR = Q_3 - Q_1 (75% 분위수 - 25% 분위수)

2. 목적

동떨어진 데이터(Outlier 아웃라이어) 가 있는 경우 robust scaler 를 쓴다. 중앙값과 IQR을 사용하여 아웃라이어의 영향을 최소화한다.

Scaler 비교