[python] 데이터 정규화(Normalization)

데이터 정규화는 데이터를 일정한 범위로 변환하는 과정을 의미합니다. 데이터의 범위가 다른 경우, 다른 단위로 측정된 경우 또는 데이터의 값이 매우 크거나 작은 경우에 사용됩니다. 정규화를 통해 데이터를 일반적인 형태로 변환하여 비교나 분석을 용이하게 할 수 있습니다.

1. 최소-최대 스케일링(Min-Max Scaling)

최소-최대 스케일링은 데이터를 정해진 범위로 변환하는 가장 간단한 방법입니다. 데이터의 최소값과 최대값을 사용하여 데이터를 0에서 1 사이의 범위로 스케일링합니다.

from sklearn.preprocessing import MinMaxScaler

# 데이터 생성
data = [[10], [20], [30], [40], [50]]

# 스케일링 객체 생성 및 스케일링
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(data)

print(scaled_data)
[[0. ]
 [0.25]
 [0.5 ]
 [0.75]
 [1.  ]]

2. Z-Score 정규화

Z-Score 정규화는 데이터의 평균과 표준편차를 사용하여 데이터를 정규분포 형태로 변환합니다. 평균을 0으로, 표준편차를 1로 스케일링하여 데이터를 변환합니다.

from sklearn.preprocessing import StandardScaler

# 데이터 생성
data = [[10], [20], [30], [40], [50]]

# 스케일링 객체 생성 및 스케일링
scaler = StandardScaler()
scaled_data = scaler.fit_transform(data)

print(scaled_data)
[[-1.41421356]
 [-0.70710678]
 [ 0.        ]
 [ 0.70710678]
 [ 1.41421356]]

3. 로그 변환(Log Transformation)

로그 변환은 데이터의 값에 로그를 취하여 변환하는 방법입니다. 주로 데이터가 왜곡되거나 비대칭인 경우에 사용되며, 데이터의 분포를 조절하는 효과를 가집니다.

import numpy as np

# 데이터 생성
data = np.array([1, 10, 100, 1000, 10000])

# 로그 변환
log_transformed_data = np.log(data)

print(log_transformed_data)
[ 0.          2.30258509  4.60517019  6.90775528  9.21034037]

결론

데이터 정규화는 데이터를 일정한 범위로 변환하여 분석하고 비교하는 과정입니다. 최소-최대 스케일링, Z-Score 정규화, 로그 변환 등 다양한 방법을 사용할 수 있으며, 데이터의 특성에 맞게 적절한 방법을 선택하여 사용해야 합니다.


참고 자료