less than 1 minute read

label encoder

  • 문자로 되어있는 데이터를 숫자로 레이블화하는 함수.
from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()

# 레이블 인코더 피팅.
le.fit(df['A'])

# 레이블 인코더 내부 클래스 확인
le.classes_

# 주어진 데이터를 레이블로 변환
le.transform(df['A'])

df['le_A'] = le.transform(df['A'])

# fit + transform
le.fit_transform(df['A'])

# 레이블화된 숫자를 역변환.
le.inverse_transform(df['le_A'])

min_max scaler

  • 최대값~최소값 사이의 값을 0~1사이의 값으로 균일화한다.

  • 매우 다른 스케일의 범위를 0과 1사이로 변환한다.

  • $x’ = \frac{x-min(x)}{max(x)-min(x)}$

from sklearn.preprocessing import MinMaxScaler

mms = MinMaxScaler()

# 데이터 피팅
mms.fit(df)

# 데이터 최대값, 데이터 최소값, 데이터 전체 범위
mms.data_max_, mms.data_min_, mms.data_range_

# 스케일링 진행
df_mms = mms.transform(df)


Standard Scaler

  • 각 특성의 평균을 0, 분산을 1로 변경하여 모든 특성이 같은 크기를 가지게 한다.

  • 표준정규분포화 시킨다고 생각할수도 있다.

  • 이 방법은 특성의 최솟값과 최댓값 크기를 제한하지 않는다.

  • $z = \frac{X-\mu}{\sigma}$

from sklearn.preprocessing import StandardScaler

ss = StandardScaler()

# 데이터 피팅
ss.fit(df)

# 데이터의 평균, 표준편차
ss.mean_, ss.scale_

# 데이터의 정규분포화
df_ss = ss.transform(df)
df_ss

Robust Scaler

  • 표준정규분포에 평균과 분산 대신 중간값과 사분위값을 사용한다.

    • 따라서, 극단값의 영향을 받지 않는다.
  • $\frac{x_i-Q_2}{Q_3-Q_1}$

from sklearn.preprocessing import StandardScaler

ss = StandardScaler()

# 데이터 피팅
ss.fit(df)

# 데이터의 평균, 표준편차
ss.mean_, ss.scale_

# 데이터의 정규분포화
df_ss = ss.transform(df)
df_ss