[Python] Scaling (Min-Max, Standard, Robust)

이소티·2023년 8월 28일
0

ML

목록 보기
3/4



1. Min-Max scaler



  • 최소, 최대값이 각각 0,1이 되도록 스케일링




df = pd.DataFrame( {
    'A' : [10, 20, -10, 0, 25],
    'B' : [1, 2, 3, 1, 0]
})

df



1-1. MinMaxScaler 호출


from sklearn.preprocessing import MinMaxScaler

mms = MinMaxScaler()

1-2. fit


mms.fit(df)

mms.data_max_, mms.data_min_, mms.data_range_


1-3. transform


mms.transform(df)


  • 역변환시킬 수도 있음

mms.inverse_transform(df_mms)





2. Standard Scaler



  • 평균 0 , 표준편차 1로 변환





2-1. Standard Scaler 호출


from sklearn.preprocessing import StandardScaler

ss = StandardScaler()

2-2. fit

ss.fit(df)

2-3. transform

ss.transform(df)


ss.mean_, ss.scale_





3. Robust Scaler




  • median 데이터를 0으로 잡고, Q1,Q3 사분위수와의 차이 만큼을 기준으로 정규화






df = pd.DataFrame({
    'A' : [-0.1, 0, 0.1, 0.2, 0.3, 0.4, 1.0, 1.1, 5.0]
})

df


from sklearn.preprocessing import MinMaxScaler, StandardScaler, RobustScaler

mm = MinMaxScaler()
ss = StandardScaler()
rs = RobustScaler()

df_scaler = df.copy()

df_scaler['MinMax'] = mm.fit_transform(df)
df_scaler['Standard'] = ss.fit_transform(df)
df_scaler['Robust'] = rs.fit_transform(df)

df_scaler



import seaborn as sns
import matplotlib.pyplot as plt

sns.set_theme(style='whitegrid')

plt.figure(figsize=(16,6))

sns.boxplot(data=df_scaler, orient='h')



  • MinMax와 standard는 이상치에 민감하다

  • Robust는 이상치에 영향을 덜 받음

profile
데이터 관련 학습 일지

0개의 댓글