제로베이스 20220525 스케일러 TIL
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