데이터 정규화는 데이터의 스케일을 조정하여 모델의 학습을 개선하고 예측 성능을 향상시키는 과정이다.
주로 머신러닝 모델에서 사용된다.
데이터를 특정 범위로 스케일링합니다. 일반적으로 0과 1 사이의 범위로 변환된다.
는 원래 데이터 포인트, 은 데이터의 최솟값, 는 데이터의 최댓값
from sklearn.preprocessing import MinMaxScaler
# 예시 데이터
data = {'feature1': [-1, -0.5, 0, 1],
'feature2': [2, 6, 10, 18]}
df = pd.DataFrame(data)
# MinMaxScaler 객체 생성
scaler = MinMaxScaler()
# 데이터 변환 (fit과 transform을 한 번에 수행)
scaled_data = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)
print("원본 데이터:")
print(df)
print("\nMinMax Scaling 후 데이터:")
print(scaled_data)
fit_transform 메서드를 사용해 변환된 데이터 얻는다.
참고로, 스케일러 객체를 사용하여 변환하는 것이 일반적이며, 새로운 데이터에 대해 스케일을 조정하려면 fit_transform 대신 fit 메서드를 먼저 호출한 다음 transform 메서드를 사용할 수 있다.
데이터를 평균이 0이고 표준편차가 1인 분포로 변환한다.
는 원래 데이터 포인트, 는 데이터의 평균, 는 데이터의 표준편차
from sklearn.preprocessing import StandardScaler
# 예시 데이터프레임
data = {'feature1': [-1, -0.5, 0, 1],
'feature2': [2, 6, 10, 18]}
df = pd.DataFrame(data)
# StandardScaler 객체 생성
scaler = StandardScaler()
# 데이터프레임의 열을 표준화
standardized_df = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)
print("원본 데이터:")
print(df)
print("\n표준화 후 데이터:")
print(standardized_data)
중앙값과 사분위 범위를 사용해 이상치의 영향을 최소화
from sklearn.preprocessing import RobustScaler
# 예시 데이터
data = {'feature1': [-1, -0.5, 0, 1],
'feature2': [2, 6, 10, 18]}
df = pd.DataFrame(data)
# RobustScaler 객체 생성
scaler = RobustScaler()
# 데이터 변환 (fit과 transform을 한 번에 수행)
robust_scaled_data = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)
print("원본 데이터:")
print(df)
print("\n로버스트 스케일링 후 데이터:")
print(robust_scaled_data)
로버스트 스케일링은 이상치에 영향을 받지 않고 스케일링을 수행하므로, 이상치가 있는 데이터셋에 유용하다.
각 데이터 포인트를 해당 벡터의 길이로 나누어 벡터를 단위 길이로 만든다.
주로 특징 벡터를 정규화한다.데이터의 방향(각도)이 중요할 때 유용하다.
from sklearn.preprocessing import Normalizer
# 예시 데이터
data = {'feature1': [-1, -0.5, 0, 1],
'feature2': [2, 6, 10, 18]}
df = pd.DataFrame(data)
# Normalizer 객체 생성
normalizer = Normalizer()
# 데이터 변환 (fit과 transform을 한 번에 수행)
normalized_data = pd.DataFrame(normalizer.fit_transform(df), columns=df.columns)
print("원본 데이터:")
print(df)
print("\n정규화 후 데이터:")
print(normalized_data)