스터디노트 (Machine Learning 3)

zoe·2023년 5월 16일
0

label_encoder

  • label_encoder : 대상이 되는 문자로 된 데이터를 숫자 - 카테고리컬한 데이터로 fit 한 후에 transform을 하면 변환됨
  • fit_transform : 한번에 줄이기 가능
  • inverse_transform : 역변환
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'])




min-max scaling

  • min-max scaling : 최대 최소값을 1과 0으로 강제로 맞추는 것
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)




Standard Scaler

  • Standard Scaler : 표준정규분포(Z = X - μ / σ), 평균을 0으로 표준편차를 1로 맞추는 것
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)




Robust Scaler

  • Robust Scaler :
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');

💻 출처 : 제로베이스 데이터 취업 스쿨

profile
#데이터분석 #퍼포먼스마케팅 #데이터 #디지털마케팅

0개의 댓글