데이터 스케일링이란 데이터 전처리 과정 중의 하나로서, 피처(feature) 즉 속성 들마다 데이터값의 범위의 차이가 클 경우 데이터 스케일링을 해야 됩니다. 즉 데이터 스케일링을 통해 모든 피처들의 데이터 분포나 범위를 동일하게 조정해 줍니다.
사이킷런에서 제공하는 5가지의 스케일러입니다.
종류 | 설명 |
StandardScaler | 평균 0 과 표준편차1이 되도록 정규화하는 기본적인 스케일러 |
MinMaxScaler | 최대값 1, 최소값 0이 되도록 스케일링 |
MaxAbsScaler | 최대 절대값이 1, 최소값이 0이 되도록 스케일링 |
RobustScaler | 중앙값과 IQR을 사용하여 이상치의 영향을 최소화하여 스케일링 |
Normalizer | 행단위의 정규화하는 스케일링 |
가장 많이 사용되는 StandardScaler를 사용하여 실습하도록 하겠습니다.
사이킷런에서 제공되는 암진단 데이터를 로드하고 해당 데이터를 데이터프레임 형태로 변환합니다.
#데이터 스케일링
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_breast_cancer
cancer=load_breast_cancer() #암진단 데이터 불러오기
df = pd.DataFrame(data=cancer.data, columns=cancer.feature_names)
df['target'] = cancer.target df.head()
|
해당 데이터를 확인하면, 데이터의 범위가 차이가 많이 납니다. 예를 들어 mean compactness는 0~1 사이 데이터이고, mean perimeter은 100이 넘는 데이터가 많습니다. 이러한 데이터의 차이의 격차가 클 경우는 데이터 스케일링이 필요합니다.

StandardScaler 모듈을 가져오고, 학습데이터와 테스트데이터로 나눕니다. 그리고 데이터 스케일링을 진행하는데, X_train 데이터 셑을 평균이 0이고 표준편차가 1인 표준정규분포로 변환하여 표준화시켜 X_train_scaled 변수가 가리킵니다.
from sklearn.preprocessing import StandardScaler #StandardScaler 모듈을 가져옴
#학습데이터와 테스트 데이터를 80%,20%로 나눔 X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, test_size=0.2, random_state=3)
std = StandardScaler() #데이터 스케일링
std.fit(X_train)
X_train_scaled = std.transform(X_train) #데이터 스케일링한 데이터 셑은 X_train_scaled
|
X_train_scaled은 행은 455개이고 30개 칼럼으로 구성된 것을 확인할 수 있습니다.

X_train_ scaled와 X_train 데이터 셑을 행이 13650개, 칼럼이 1인 데이터 셑으로 재구조화합니다.
X_train_scaled_1 = X_train_scaled.reshape(13650,1)
X_train_data_1 = X_train.reshape(13650,1)
|
원 데이터를 히스토그램 그려 데이터의 분포를 확인합니다.
plt.hist( X_train_data_1, bins=30, color= 'blue', alpha = 0.7, density=True)
plt.title('before data scaling')
plt.show()
|

데이터 표준화를 한 데이터에 대해 히스토그램을 그려봅니다.
plt.hist(X_train_scaled_1, bins=30, alpha = 0.7, density = True, color= 'green')
plt.title('StandardScaler')
plt.show()
|

향후 표준화 데이터를 이용하여 모델링을 하면 정확도가 높아짐을 확인할 수 있습니다.
데이터 탐색에서 데이터의 단위 또는 범위가 차이가 크게 나면 반드시 데이터 스케일링을 하셔야 합니다.
'데이터분석 > 데이터 탐색' 카테고리의 다른 글
교차분석과 상관분석 (0) | 2023.10.03 |
---|---|
데이터 전처리 과정 (2) | 2023.10.02 |
데이터 분석의 시작은 데이터 탐색이다. (0) | 2023.09.30 |
두 변수 간의 관련성에 대한 이야기 (0) | 2023.09.27 |