스케일링: 특성의 범위를 같게 만들어주는 방법.

 

Standardization - 표준화

: 평균이 0, 분산이 1인 정규분포로 변환하는 과정이다.

Normalization - 정규화

: 값들을 0~1 사이의 값으로 변환하는 과정이다.

 

※ 정규화는 이상치의 영향을 많이 받는다. 따라서 이상값이 많은 경우 표준화를 적용한다.

 

우선 Iris 데이터를 이용해서 데이터를 알아보겠습니다.

from sklearn.datasets import load_iris
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
iris = load_iris()
df = pd.DataFrame(data=iris.data,columns=iris.feature_names)

iris 데이터의 꽃받침의 길이와 넓이를 가져옵니다.

sepal_length = df[['sepal length (cm)']]
sepal_width = df[['sepal width (cm)']]

sns.distplot(sepal_length)
sns.distplot(sepal_width)

 

이제 scikit learn의 Scaler들을 하나씩 사용해보겠습니다.

Standardization - 표준화

1. StandardScaler: 평균을 0, 분산을 1로 스케일링합니다.

from sklearn.preprocessing import StandardScaler
Standardsc = StandardScaler()

#변환
Standardsc.fit(sepal_length)
sepal_length_scaled=Standardsc.transform(sepal_length)

Standardsc.fit(sepal_width)
sepal_width_scaled=Standardsc.transform(sepal_width)

평균이 0 으로 잘 스케일링됨을 알 수 있습니다.

 

2. RobustScaler: 중앙값과 사분위수를 기준으로 스케일링합니다. (IQR)

from sklearn.preprocessing import RobustScaler
Robustsc = RobustScaler()

Robustsc.fit(sepal_length)
sepal_length_Rscaled=Robustsc.transform(sepal_length)

Robustsc.fit(sepal_width)
sepal_width_Rscaled=Robustsc.transform(sepal_width)

 

Normalization - 정규화

1.MinMaxScaler : 0~1사이의 값으로 스케일링

from sklearn.preprocessing import MinMaxScaler
MinMax = MinMaxScaler()

MinMax.fit(sepal_length)
sepal_length_minmax = MinMax.transform(sepal_length)

MinMax.fit(sepal_width)
sepal_width_minmax = MinMax.transform(sepal_width)

값들이 0~1사이에 분포하고 있음을 알 수 있습니다.

 

2. MaxAbsScaler : -1 ~ 1 사이에 값들이 분포하도록 스케일링합니다.

from sklearn.preprocessing import MaxAbsScaler
Mabs = MaxAbsScaler()

Mabs.fit(sepal_length)
sepal_length_abs = Mabs.transform(sepal_length)

Mabs.fit(sepal_width)
sepal_width_abs = Mabs.transform(sepal_width)

 

참고.

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

 

API Reference

This is the class and function reference of scikit-learn. Please refer to the full user guide for further details, as the class and function raw specifications may not be enough to give full guidel...

scikit-learn.org

 

'Others > Data Science' 카테고리의 다른 글

Preprocessing (5) Pipeline  (0) 2022.07.25
Preprocessing (3) Encoding  (0) 2022.07.18
Preprocessing (2) 누락된 값의 처리(Null)  (0) 2022.07.15
Pandas - DataFrame (3) 조회(loc/iloc)  (0) 2022.07.15
Pandas - DataFrame (2) 삭제  (0) 2022.07.14

+ Recent posts