df = pd.DataFrame({
'A' : [-0.1, 0., 0.1, 0.2, 0.3, 0.4, 1.0, 1.1, 5]
})
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['Stardard'] = ss.fit_transform(df)
df_scaler['Robust'] = rs.fit_transform(df)
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')
![](https://velog.velcdn.com/images/bbdbbdb337/post/5e90d6a7-8d3f-4f6b-b1ea-76261ca56a62/image.png)
- Robust Scaler가 noise(이상치)에 영향을 가장 받지 않으며, Min-max Scaler는 아주 민감하다. Standard Scaler는 noise에 민감할 수 있다.
- Min-Max Scaler는 범위가 제한된 데이터를 필요로 하거나 이상치가 적은 데이터에서 더 적합하다.
- Standard Scaler는 데이터를 정규 분포에 가깝게 만들어야 하거나, 대규모 데이터셋에서 이상치의 영향이 상대적으로 덜할 때 유용할 수 있다.