머신러닝- label_encoder, min_max, standard, robust scaler

화이팅·2023년 2월 15일
0

machine_learning

목록 보기
2/12

스케일링 : 범위 재정의

-> 범위 or 분포 같게 만들기

  • 머신러닝에서는 컬럼들 간의 범위 격차가 심할 경우, 제대로 학습이 안 될 수도 있다.
  • 따라서 minmaxscaler & standardscaler 사용
  • 결정나무에서는 이런 전처리 의미 x
  • 주로 cost function 최적화할 때 의미 o

  1. label encoder : 문자 -> 숫자
    머신러닝 사용할 땐, 숫자로 되어있어야 함
EX)
import pandas as pd

df=pd.DataFrame({
    'A':['a','b','c','a','b'],
    'B':[1,2,3,1,0]
})
  1. fit -> transform
    from sklearn.preprocessing import LabelEncoder
    le=LabelEncoder()
    le.fit(df['A'])
    df['le_A']=le.transform(df['A']) # 변환한 값 컬럼으로 만들어주기
  1. 한번에 fit, transform
    df['le_A']=le.fit_transform(df['A'])

반대로 문자 <- 숫자
le.inverse_transform(df['le_A'])

  1. min-max scaling(정규화) : 0과1 사이로 축소(비율)
EX)
df=pd.DataFrame({
    'A':[10,20,-10,0,25],
    'B':[1,2,3,1,0]
})

fit
from sklearn.preprocessing import MinMaxScaler
mms=MinMaxScaler()
mms.fit(df)
mms.datamax, mms.datamin, mms.datarange # 값 확인

transform
df_mms=mms.transform(df)

복구
mms.inverse_transform(df_mms)

  • 이상치가 존재할 경우, 결과 범위 압축 가능성 o

3. standard scaler : 표준화

from sklearn.preprocessing import StandardScaler
ss=StandardScaler()
ss.mean, ss.scale # 평균, 표준편차
df_ss=ss.fit_transform(df)

  • 이상치에 민감

4. robust scaler

  • 사분위값 사용
  • 이상치 영향 최소화
profile
하하...하.

0개의 댓글