import pandas as pd
df = pd.DataFrame({
'A' : ['a', 'b', 'c', 'a', 'b'],
'B' : [1, 2, 3, 1, 0]
})
df
# label encoder란?
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
le.fit(df['A'])
#대상이 되는 문자로 된 데이터를 숫자 - 카테고리컬한 데이터로 fit 한 후에 transform을 하면 변환됨
le.classes_
df['le_A'] = le.transform(df['A'])
df
# 한 번에 줄이는 것은 fit_transform
le.fit_transform(df['A'])
le.transform(['a'])
le.transform(['b'])
# 역변환
le.inverse_transform([1, 2, 2, 2])
le.inverse_transform(df['le_A'])
df = pd.DataFrame({
'A' : [10, 20, -10, 0, 25],
'B' : [1, 2, 3, 1, 0]
})
df
# fit
from sklearn.preprocessing import MinMaxScaler
mms = MinMaxScaler()
mms.fit(df)
# 그러면 이런 요소를 찾게 된다
mms.data_max_, mms.data_min_, mms.data_range_
# transform
df_mms = mms.transform(df)
df_mms
# 역변환
mms.inverse_transform(df_mms)
df
# fit
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
ss.fit(df)
# 평균과 표준편차
ss.mean_, ss.scale_
# transform
df_ss = ss.transform(df)
df_ss
'A' : [-0.1, 0., 0.1, 0.2, 0.3, 0.4, 1.0, 1.1, 5]
})
df
# fit_transform
ss.fit_transform(df)
# invers_transform
ss.inverse_transform(df_ss)
df = pd.DataFrame({
'A' : [-0.1, 0., 0.1, 0.2, 0.3, 0.4, 1.0, 1.1, 5]
})
df
# robust scaler, 앞 내용 포함
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
# box_plot
# 각 스케일러의 차이와 그 중 Robust 스케일러의 특징
# MinMax : min -> 0, max -> 1로 값을 두고 함
# MinMax, Standard 개 모두 이상치에 영향을 받으면 이상해질 수 있다.
# Robust의 경우 이상치에 영향을 크게 받지 않을 수 있다.
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');
💻 출처 : 제로베이스 데이터 취업 스쿨