본문 바로가기
Python/머신러닝+딥러닝 Ⅱ

피처 스케일링(스탠다드 스케일러, 민맥스 스케일러)

by Mr.DonyStark 2024. 4. 6.

□ 피처 스케일링
  ○ 표준화는 데이터의 피처 각각이 평균이 0이고 분산이 1인 가우시안 정규분포를 가진 값으로 변환하는 것
  ○ 정규화는 서로다른 피처의 크기를 통일하기위해 크기를 변환해주는 것


    - standardScaler : 평균이 0이고, 분산이 1인 정규 분포형태로 변환 (z score 변환)
    - MinMaxScaler : 데이터의 값을 0과 1사이의 범위 값으로 변환(음수값이 있으면 -1 ~ 1값으로 변환)
*선형회귀, SVM 등은 스캐일링 기법등에 민감함

 

 코드

  ○ 데이터 불러오기 및 평균, 분산 값 구하기

from sklearn.datasets import load_iris
import pandas as pd

iris = load_iris()
iris_data = iris.data
iris_df = pd.DataFrame(data=iris_data, columns=iris.feature_names)

print(f"feature 평균\n{iris_df.mean()}")
print("\n")
print(f"feature 분산\n{iris_df.var()}")

 

  ○ 스탠다드 스케일러 적용

#스탠다드 스케일러
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler() #객체 생성
scaler.fit(iris_df) #변환1
iris_scaled = scaler.transform(iris_df) #변환2 : 평균과 표준편차롤 구함

iris_df_scaled = pd.DataFrame(data=iris_scaled, columns=iris.feature_names)
print(f"스탠다드 스캐일링 feature 평균\n{iris_df_scaled.mean()}")
print("\n")
print(f"스탠다드 스캐일링 feature 분산\n{iris_df_scaled.var()}")

 

  ○ Min-Max scaler 

#민맥스스케일러
from sklearn.preprocessing import MinMaxScaler

#MinMaxScaler
scaler = MinMaxScaler() #객체 생성
scaler.fit(iris_df) #변환1
iris_scaled = scaler.transform(iris_df) #변환2 : 데이터의 값을 0과 1사이의 범위 값으로 변환(음수값이 있으면 -1 ~ 1값으로 변환)

iris_df_scaled = pd.DataFrame(data=iris_scaled, columns=iris.feature_names)
print("Min-Max 스케일링 feature 들의 최소 값")
print(iris_df_scaled.min())
print("\n")
print("Min-Max 스케일링 feature 들의 최대 값")
print(iris_df_scaled.max())