Label_Encoder
- 문자형 데이터를 숫자형 데이터로 변환할 때 사용
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
le.fit(df['A'])
le.classes_
df['le_A'] = le.transform(df['A'])
df['le_A'] = le.fit_transform(df['A'])
- 역변환 (숫자형 데이터를 다시 문자형 데이터로 변환)
le.inverse_transform(df['le_A'])
Min-Max Scaler
- 데이터의 min을 0으로 max를 1로 변환 (정규화)

from sklearn.preprocessing import MinMaxScaler
mms = MinMaxScaler()
mms.fit(df)
mms.data_max_
mms.data_min_
mms.data_range_
df_mms = mms.transform(df)
df_mms = fit_transform(df)
mms.inverse_transform(df_mms)
Standard Scaler
- 데이터의 평균을 0으로 표준편차를 1로 변환 (표준화)

from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
ss.fit(df)
ss.mean_
ss.scale_
df_ss = ss.transform(df)
Robust Scaler
- 데이터의 Q2(median)를 0으로 Q3-Q1(50%의 데이터 길이)을 1로 변환

import pandas as pd
from sklearn.preprocessing import MinMaxScaler, StandardScaler, RobustScaler
df = pd.DataFrame({
'A' : [-0.1, 0., 0.1, 0.2, 0.3, 0.4, 1.0, 1.1, 5]
})
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)
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');
- A라는 데이터에는 outlier 존재
- minmaxscaler, standardscaler는 outlier의 영향을 크게 받음.
- 반면에 robustscaler는 영향을 크게 받지 않음.(outlier는 크게 벗어난 채로 존재)
