□ 피처 스케일링
○ 표준화는 데이터의 피처 각각이 평균이 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())
'Python > 머신러닝+딥러닝 Ⅱ' 카테고리의 다른 글
데이터 인코딩(레이블 인코딩, 원-핫 인코딩) (0) | 2024.04.06 |
---|---|
교차검증 Ⅱ (1) | 2024.03.26 |
교차검증 Ⅰ (1) | 2024.03.26 |
사이킷런(scikit-learn)과 지도학습 모델, 데이터셋 구축 (0) | 2024.03.26 |