스케일링: 특성의 범위를 같게 만들어주는 방법.
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 |