데이터분석, 스케일링
제조업 → 서비스 기업
으로의 경향을 보임하나의 instance(sample) - 여러 속성값들(feature)
피쳐 간 크기 및 단위가 들쭉날쭉하거나 가지는 값의 범위가 크게 다른 경우, 혹은 이상치 문제가 심각한 경우, 데이터 분석이 어려워지거나 머신러닝, 딥러닝 방법을 적용하기 어려워지는 경우가 있음
Normalization(정규화): 여러가지 값들이 가지는 범위의 차이를 왜곡하지 않으면서 범위를 맞추는 것
min-max normalization
z-score normalization(standardization)
log scaling
다양한 스케일링을 통해 데이터가 좀더 정규분포에 가까워지도록 스케일링하여 outlier 문제에도 좀 더 적극적으로 대응 가능
df[’age’].hist(bins=30)
→ 특정 피쳐의 값으로 히스토그램을 그려볼 수 있음scaler = MinMaxScaler()
df['fare_minmax'] = scaler.fit_transform(df['fare'].values.reshape(-1,1))
df['age_minmax'] = scaler.fit_transform(df['age'].values.reshape(-1,1))
scaler = StandardScaler()
df['fare_standard'] = scaler.fit_transform(df['fare'].values.reshape(-1,1))
df['age_standard'] = scaler.fit_transform(df['age'].values.reshape(-1,1))
# 난수 생성
exp_scale_data = np.random.exponential(1,300)
df_exp = pd.DataFrame(columns=['x'])
df_exp['x'] = exp_scale_data
# log scaling
df_exp['log_x'] = np.log(df_exp['x'])
# outlier 값들이 조금 있지만 비교적 종 모양을 따라감
# squre root를 이용한 스케일링
df['fare_sqrt'] = np.sqrt(df['fare'])