데이터 정규화
- 데이터의 범위를 0 과 1 사이로 변환하는 과정
- 서로 다른 범위를 가진 데이터를 동일한 스케일로 맞추어 비교하기 쉽게 만듬
Min - Max 정규화
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
# 예시 데이터프레임 생성
data = {
'특성1': [10, 20, 30, 40, 50],
'특성2': [1, 2, 3, 4, 5]
}
df = pd.DataFrame(data)
# Min-Max 정규화
scaler = MinMaxScaler()
normalized_df = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)
print(normalized_df)
특성1 특성2
0 0.0 0.0
1 0.25 0.25
2 0.5 0.5
3 0.75 0.75
4 1.0 1.0
데이터 표준화
- 데이터를 평균이 0, 표준편차가 1 이 되도록 변환하는 과정
- 정규분포를 가정한 많은 분석 기법에 유리
Z-Score 표준화 ( StandardScaler )
from sklearn.preprocessing import StandardScaler
# Z-점수 표준화
scaler = StandardScaler()
standardized_df = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)
print(standardized_df)
특성1 특성2
0 -1.414214 -1.414214
1 -0.707107 -0.707107
2 0.000000 0.000000
3 0.707107 0.707107
4 1.414214 1.414214
비선형 변환
- 데이터의 비정상적인 분포를 정규 분포에 가깝게 만들기 위해 사용
- 로그변환
- 제곱근 변환
- 박스-콕스 변환
- 등이 있다
로그( Log ) 변환
- 양의 데이터 에서 주로 사용
- 데이터의 분포를 좁히는데 유용
- 지수분포를 가진 데이터를 다룰때 효과적
import numpy as np
# 로그 변환
df['특성1_log'] = np.log(df['특성1'])
print(df)
특성1 특성2 특성1_log
0 10 1 2.302585
1 20 2 2.995732
2 30 3 3.401197
3 40 4 3.688879
4 50 5 3.912023
제곱근( Square Root ) 변환
- 데이터의 분포를 평탄하게 만들기 위한 또 다른 방법
- 포아송 분포를 가진 데이터에서 사용
# 제곱근 변환
df['특성1_sqrt'] = np.sqrt(df['특성1'])
print(df)
특성1 특성2 특성1_log 특성1_sqrt
0 10 1 2.302585 3.162278
1 20 2 2.995732 4.472136
2 30 3 3.401197 5.477226
3 40 4 3.688879 6.324555
4 50 5 3.912023 7.071068
박스-콕스 ( Box-Cox ) 변환
- 다양한 형태의 데이터 분포를 정규분포에 가깝게 변환하기 위해 사용
- 양수 데이터 에서만 사용 가능
from scipy.stats import boxcox
# 박스-콕스 변환
df['특성1_boxcox'], _ = boxcox(df['특성1'])
print(df)
특성1 특성2 특성1_log 특성1_sqrt 특성1_boxcox
0 10 1 2.302585 3.162278 2.850350
1 20 2 2.995732 4.472136 3.992679
2 30 3 3.401197 5.477226 4.872105
3 40 4 3.688879 6.324555 5.609646
4 50 5 3.912023 7.071068 6.245548
'Python > Pandas' 카테고리의 다른 글
[Pandas] 인코딩 ( Encoding ) (3) | 2024.12.26 |
---|---|
[Pandas] 이상치 탐지와 처리 (1) | 2024.12.26 |
[Pandas] 결측치 탐지와 처리 (1) | 2024.12.26 |
[Pandas] 피벗 테이블 - pivot_table() (4) | 2024.12.16 |
[Pandas] 그룹화 및 집계함수 (1) | 2024.12.16 |