Data Science/Pandas & Numpy&Scikit-learn

[정규화,sklearn] MinMaxScaler, StandardScaler, RobustScaler

상어군 2021. 9. 14. 15:47
반응형

예측 모델을 위한 입력 피처를 구성하기 위해서는 수치형 값을 정규화 해야한다.

컬럼별로 수치형 값의 범위가 다를 경우 모델이 정확하게 학습되지 않을 수 있다.

본 포스팅에서는 각 컬럼들이 비슷한 범위를 가지게 하는 세가지 방법을 소개한다.

 

데이터 준비

import pandas as pd
df=pd.DataFrame({
    'ID':[1,2,3,4,5],
    'name':['아메리카노','바닐라라떼','아메리카노','민트초코','아메리카노'],
    'tumbler':['N','Y','Y','N','N'],
    'Age':[25,31,18,22,35],
    'weight':[88.5,65.3,61.6,77.4,89.9]
})

print(df)

데이터 타입 확인

print(df.dtypes)

수치형 컬럼 지정

해당 데이터에서 ID컬럼은 int64 타입을 가지지만 의미상으로는 고유한 ID이기 때문에 정규화 대상에서 제외한다.

numerical_list = ['Age','weight']

정규화 적용

-MinMaxScaler

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
df[numerical_list] = scaler.fit_transform(df[numerical_list])

print(df)

-StandardScaler

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
df[numerical_list] = scaler.fit_transform(df[numerical_list])

print(df)

-RobustScaler

from sklearn.preprocessing import RobustScaler

scaler = RobustScaler()
df[numerical_list] = scaler.fit_transform(df[numerical_list])

print(df)

 

참고문헌

https://scikit-learn.org/stable/modules/classes.html#module-sklearn.preprocessing

https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html

https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html

https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.RobustScaler.html

반응형