1. 로그 변환(Log transform)
로그 변환은 데이터의 범위를 조정하고 왜곡된 분포를 개선하기 위해 사용되는 기법입니다.
특히, 데이터 값 사이에 큰 차이가 있거나, 한쪽으로 치우친 분포를 보일 때 사용합니다.
로그 변환은 특히 데이터가 정규 분포를 따르지 않고, 특정 방향으로 치우친 비대칭 분포를 보일때 유용합니다.
변환을 통해 데이터는 보다 정규 분포에 가까워지며, 이는 통계적 분석과 머신러닝 모델에서 중요한 가정에 부합하게 만들어줍니다.
2. 로그 변환 사용시 주의점
로그 변환을 적용할 때는 데이터에 0이나 음수 값이 포함되어 있지 않은지 확인해야 합니다.
이러한 값들은 로그 변환을 적용할 수 없기 때문에, 데이터에 작은 상수값을 더하는 등의 전처리 작업이 필요합니다.
3. 데이터 리스트에 로그 변환 적용
import numpy as np
data = [1, 10, 100, 1000, 10000]
log_transformed = np.log(data)
print(log_transformed)
[0. 2.30258509 4.60517019 6.90775528 9.21034037]
4. 로그 변환 사용 예시
4.1 데이터 불러오기
import pandas as pd
# 데이터셋 로드
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
4.2 데이터 왜도 출력
이상적인 정규 분포의 경우 왜도 값이 0에 가깝고 0.5 이상이면 약간 비대칭적, 1 이상이면 상당히 비대칭적인 것으로 간주할 수 있습니다.
age_skewness = train.select_dtypes('number').skew()
print(age_skewness)
4.3 로그 변환 전 분포 확인 (Age 피처)
import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize=(6, 3))
sns.histplot(train['Age'], kde=True, color="skyblue")
plt.show()
4.4 Age 피처 로그 변환
numeric_features = ['Age']
train[numeric_features] = np.log(train[numeric_features])
test[numeric_features] = np.log(test[numeric_features])
4.5 로그 변환 후 Age 피처 분포 확인
import seaborn as sns
print(train[numeric_features].head())
plt.figure(figsize=(6, 3))
ax = sns.histplot(train['Age'], kde=True, color="skyblue")
plt.show()
'머신러닝 > 머신러닝: 입문 개념' 카테고리의 다른 글
회귀 모델 성능 측정 (0) | 2024.12.08 |
---|---|
데이터 분할 (0) | 2024.12.06 |
데이터 표준화(StandardScaler) (0) | 2024.12.04 |
모델 성능 검증 (0) | 2024.12.02 |
모델학습과 예측 (0) | 2024.12.01 |