Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 scikit-learn 라이브러리로 데이터 스케일링하는 방법

특성 스케일링(feature scaling)은 머신러닝 알고리즘을 구축할 때 데이터 전처리 단계에서 반드시 거쳐야 하는 핵심 과정입니다. 데이터를 특정 범위 내로 정규화(normalize)하여 모델이 안정적으로 학습할 수 있도록 돕습니다.

또한 스케일링은 연산 속도를 높이는 효과도 있습니다. 값의 크기가 일정하게 맞춰지면 수치 계산이 더 빠르고 효율적으로 수행되기 때문입니다.

왜 특성 스케일링이 필요한가?

학습 알고리즘에 입력되는 데이터는 일관성 있고 구조화된 형태여야 하며, 모든 특성(feature)이 동일한 스케일을 가져야 예측 성능이 극대화됩니다.

하지만 현실 세계의 데이터는 대부분 비정형(unstructured)이며, 각 특성의 값 범위가 서로 다른 경우가 많습니다. 예를 들어 어떤 특성은 0~1 사이의 값을 가지는 반면, 다른 특성은 수천 단위의 값을 가질 수 있습니다.

바로 이때 정규화(normalization)가 필요합니다. 정규화는 가장 중요한 데이터 준비 과정 중 하나로, 입력 데이터셋의 각 열(column) 값을 동일한 스케일로 변환해 줍니다.

그럼 Python에서 scikit-learn 라이브러리를 활용해 특성 스케일링을 수행하는 방법을 살펴보겠습니다.

예제 코드

import numpy as np
from sklearn import preprocessing
input_data = np.array(
[[34.78, 31.9, -65.5],
[-16.5, 2.45, -83.5],
[0.5, -87.98, 45.62],
[5.9, 2.38, -55.82]])
data_scaler_minmax = preprocessing.MinMaxScaler(feature_range=(0,1))
data_scaled_minmax = data_scaler_minmax.fit_transform(input_data)
print ("\nThe scaled data is \n", data_scaled_minmax)

실행 결과

The scaled data is
[[1.  1. 0.1394052 ]
[0.  0.75433767 0. ]
[0.33151326 0. 1. ]
[0.43681747 0.75375375 0.21437423]]

코드 설명

  • 먼저 numpy와 sklearn.preprocessing 등 필요한 패키지를 임포트합니다.

  • Numpy 라이브러리를 사용해 입력 데이터 배열을 생성합니다.

  • preprocessing 클래스에 포함된 MinMaxScaler 함수를 사용하면, 데이터를 지정한 범위(여기서는 0과 1 사이)로 변환할 수 있습니다.

  • fit_transform() 메서드를 호출하면 배열 내 모든 값이 0과 1 사이의 값으로 축소(scaling)됩니다.

  • 마지막으로 스케일링된 결과 데이터를 콘솔에 출력합니다.

이처럼 MinMaxScaler는 최솟값을 0, 최댓값을 1로 변환하는 방식으로 작동하며, 특성 간 값의 크기 차이가 클 때 모델 학습의 안정성을 높이는 데 유용하게 활용됩니다.