2023-1-OC-AI-Study-Week5

esc247·2023년 4월 29일
0

2023-1-OC-AI-Study

목록 보기
4/5

Data Scailing

feature의 데이터 분포나 범위를 동일하게 조정

  • 상대적 중요도 파악 가능
  • outlier 영향 감소

StandardScaler

from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt

scaler = StandardScaler()
scaler.fit(X_train)
scaled_X_train = scaler.transform(X_train)
scaled_X_val = scaler.transform(X_val)

scaled_X_train_check = scaled_X_train.reshape(30, -1)
print(f"Scaling전 데이터의 최대, 최소, 평균, std: {X_train['mean texture'].max(), X_train['mean texture'].min(),  X_train['mean texture'].mean(),  X_train['mean texture'].std()}")
print(f"Scaling후 데이터의 최대, 최소, 평균, std: {scaled_X_train_check[0].max(), scaled_X_train_check[0].min(), scaled_X_train_check[0].mean(), scaled_X_train_check[0].std()}")

다른 Scaler: MinMaxScaler(), MaxAbsScaler(), RobustScaler(), Normalizer()

fit(), .transform() / fit_transform()

  • fit_transform()은 train dataset에서만 사용한다
  • train data에 있는 mean과 variance를 학습한다
  • fit_transform을 test data에도 적용하게 되면 test data도 학습하게 된다.

tree-based models에 Scaling 사용하지 않는 이유

  • Scaling은 KNN, SVM 등 distance-based algorithms에서 사용한다.
    • 이 알고리즘은 어떤 feature가 큰 단위 거리를 가진다면 이 feature의 영향력이 매우 커지는 등 거리에 민감하기 때문에 Scaling이 필요하다.
  • 따라서 distance-based algorithms이 아닌 모델, 알고리즘은 Scaling이 필수적이지 않다

참고

profile
막상 하면 모르니까 일단 하자.

0개의 댓글