[ML] scikit-learn 데이터 scale

Miri Kim·2023년 3월 23일
0

ML/DL

목록 보기
3/5

머신러닝 알고리즘 이해하기

데이터 scale 조정하는 방법

sklearn.preprocessing

  1. StandardScaler
  • 각 특성의 평균을 0, 분산을 1로 변경하여 모든 특성이 같은 크기를 가지게 한다.
  • 특성의 최솟값과 최댓값 크기를 제한하지 않는다.
  • 이상치가 있는 경우 균형 잡힌 기능 척도를 보장할 수 없다.
# 1. 스케일 적용
from sklearn.preprocessing import StandardScaler

scaler =StandardScaler()

# 2. train에 fit해서 훈련하고 transform으로 학습한 변환 적용
X_trans = scaler.fit_transform(X_train)
  1. MinMaxScaler
  • 모든 특성이 정확하게 0과 1 사이에 위치하도록 데이터를 변경한다.
  • 2차원 데이터셋일 경우에는 모든 데이터가 X축의 0과 1, Y축의 0과 1 사이의 사각 영역에 담기게 됨
  • 이상치의 존재에 매우 민감함.
# 1. 스케일 적용
from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()

# 2. train에 fit해서 훈련시키기
scaler.fit(X_train)

# 3. transform으로 학습한 변환 적용하기
X_train_scaled = scaler.transform(X_train)
  1. QuantileTransformer
  • 기본적으로 1,000개의 분위(Quantile)를 사용하여 데이터를 균등하게 분포시킨다.
  • RobertScaler와 비슷하게 이상치에 민감하지 않으며, 전체 데이터를 0과 1 사이로 압축함.
# 1. 스케일 적용
from sklearn.preprocessing import QuantileTransformer

scaler =QuantileTransformer(n_quantiles=50)

# 2. train에 fit해서 훈련하고 transform으로 학습한 변환 적용
X_trans = scaler.fit_transform(X_train)
  1. RobustScaler
  • 센터링 및 스케일링 통계를 백분위수 기반으로 하므로 소수의 매우 큰 한계 이상치에 영향을 받지 않는다.
  • 이상치 자체는 변환된 데이터에 여전히 존재한다.
  • 별도의 이상치 클리핑이 필요한 경우, 비선형 변환이 필요함.
# 1. 스케일 적용
from sklearn.preprocessing import RobustScaler

scaler =RobustScaler()

# 2. train에 fit해서 훈련하고 transform으로 학습한 변환 적용
X_trans = scaler.fit_transform(X_train)
  1. Normailizer
  • 특성 벡터의 유클리디안 길이가 1이 되도록 데이터 포인트를 조정한다.
  • 지름이 1인 원에 데이터 포인트를 투영함
  • 각 데이터 포인트가 다른 비율로 (길이에 반비례하여) 스케일이 조정된다.
  • 특성 벡터의 길이는 상관 없고 데이터의 방향 또는 각도만 중요할 때 많이 사용함.
# 1. 스케일 적용
from sklearn.preprocessing import Normalizer

scaler =Normalizer()

# 2. train에 fit해서 훈련하고 transform으로 학습한 변환 적용
X_trans = scaler.fit_transform(X_train)

[자료 출처]

출처 : 혼자 공부하는 머신러닝+딥러닝 | 박해선 저
출처 : 파이썬 라이브러리를 활용한 머신러닝
출처 : sklearn.preprocessing.scaler

profile
Data Scientist로 나아가는 기록들

0개의 댓글