스케일링
- 데이터셋을 정제할 때, 특성별로 데이터 스케일이 다르면 안되기 때문에 이 작업을 통해 모든 특성의 범위를 같게 만들어줘야함
- 전체 데이터가 아닌 훈련 데이터에 대해서만 fit() 적용
scikit-learn에서 제공하는 스케일링 방법
1️⃣ StandardScaler()
- 각 특성의 평균을 0, 분산을 1로 스케일링
- 최솟값과 최댓값의 크기를 제한하지 않음
- 회귀보다 분류에 유용
- 데이터를 정규분포로 만듦
from sklearn.preprocessing import StandardScaler
# 객체 생성
scaler = StandardScaler()
# 훈련데이터의 분포 저장
scaler.fit(df)
# 훈련 데이터 스케일링
scaler_scaled = scaler.transform(df)
2️⃣ RobustScaler()
- 평균과 분산 대신에 중간값과 사분위값을 사용(중앙값 = 0 / IQR(1분위(25%) ~ 3분위(75%)) = 1)
- 데이터가 넓게 분포할 수 있음
from sklearn.preprocessing import RobusterScaler
# 객체 생성
robust_scaler = RobustScaler()
# 분포 저장
robust_scaler.fit(df)
# 스케일링
robust_scaled = robust_scaler.transform(df)
3️⃣ MinMaxScaler()
- 각 특성이 0과 1 사이에 위치하도록 스케일링
- 최대값 = 1 / 최소값 = 0
- 이상치에 취약함
from sklearn.preprocessing import MinMaxScaler
# 객체 생성
minmax_scaler = MinMaxScaler()
# 분포 저장
minmax_scaler.fit(df)
# 스케일링
minmax_scaled = minmax_scaler.transform(df)
4️⃣ MaxAbsScaler()
- 0이 기준
- 모든 값은 -1과 1사이로 표현되며, 데이터가 양수일 경우 MinMaxScaler와 같음
from sklearn.preprocessing import MaxAbsScaler
# 객체 생성
maxabs_scaler = MaxAbsScaler()
# 분포 저장
maxabs_scaler.fit(df)
# 스케일링
maxabs_scaled = maxabs_scaler.transform(df)
참고
반응형
'Dev > Python' 카테고리의 다른 글
[Python] 람다표현식(Lambda expressions) (0) | 2021.08.28 |
---|---|
[Python] 깃허브에서 주피터 노트북 파일 렌더링 방법 (0) | 2021.08.28 |
[Python] JSON, API (0) | 2021.08.28 |
[Python] Pandas 데이터 프레임 (0) | 2021.07.07 |
[Python] 제어문과 조합하여 만들기 Comprehension (0) | 2021.07.06 |