728x90
변수의 범위가 다르면 상대적으로 큰 숫자 값을 갖는 변수의 영향이 더 커진다.
숫자 데이터의 상대적인 크기 차이를 제거할 필요가 있다.
MinMaxScaler 기법
y = x - 최소 / 최대 - 최소
min_x = df.horsepower - df.horsepower.min()
min_max = df.horsepower.max() - df.horsepower.min()
df_result = min_x / min_max
df_result
<결과>
0 0.456522
1 0.646739
2 0.565217
3 0.565217
4 0.510870
...
393 0.217391
394 0.032609
395 0.206522
396 0.179348
397 0.195652
Name: horsepower, Length: 392, dtype: float64
sklearn 의 preprocessing 모듈을 사용한 정규화
from sklearn import preprocessing
X = preprocessing.StandardScaler().fit(X).transform(X)
Standard Scaling
이미지, 음성 ( 비정형 ) 에 주로 (이걸 더 많이 쓴다.)
z-score 라고 하는 데이터를 통계적으로 표준정규분포화 시켜 스케일링을 하는 방식입니다.
데이터의 평균이 0, 표준 편차가 1이 되도록 스케일링 합니다.
from sklearn.preprocessing import StandardScaler
sdscaler = StandardScaler()
sdscaler.fit_transform(data)
<결과>
array([[-0.57455813, -0.43214879, -1.06442415, ..., -0.72621157,
-0.63821689, 1.57154357],
[-1.44898585, -1.439929 , -1.18397831, ..., -1.20522124,
-1.21298732, -0.91001299],
[ 0.05003309, 0.12213032, -0.10799087, ..., -0.35668983,
-0.20713907, -0.28962385],
...,
[ 0.6329849 , 0.67640943, 1.56576738, ..., 0.97541324,
0.49695471, -0.28962385],
[ 0.84118198, 0.77718745, 0.25067161, ..., 0.73362741,
0.41073914, 0.02057072],
[ 1.54905203, 1.48263359, 1.32665906, ..., 1.78744868,
1.84048058, 0.64095986]])
댓글