본문 바로가기
Machine Learning/scikit-learn

[데이터 전처리] MinMaxScaler를 이용한 데이터 정규화 예제

by ISLA! 2023. 8. 17.

 

 

스케일링이란?

 

머신러닝 과정에서는 데이터의 특성(feature)을 추출하여 모델을 학습시킨다.
그러나 데이터 값이나 분산이 너무 크거나 작으면 모델의 학습에 부정적인 영향을 미칠 수 있다.
이를 방지하기 위해 '스케일링' 과정을 통해 데이터 값을 조정하고 분산을 줄이게 된다.

 

 

min-max 정규화

 

min-max 정규화 는 수치형 데이터 값을 0과 1 사이의 값으로 변환해주는 스케일링 방법 중 하나이다
정규화를 위한 수식은 다음과 같다

X' = (X - MIN) / (MAX - MIN)

  • X : 원본 데이터 값
  • X' : 정규화가 완료된 데이터 값
  • MIN : 최솟값
  • MAX : 최댓값

 

sklearn 라이브러리(Library)의 MinMaxScaler 사용법

 

👉 sklearn 라이브러리(Library)의 MinMaxScaler를 사용하여 train 데이터를 min-max 정규화 해보자 (0과 1사이 값으로 정리)

 

예시 코드

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
scaler.fit(train[train.columns[2:-1]])
train[train.columns[2:-1]] = scaler.transform(train[train.columns[2:-1]])
train
  1. sklearn.preprocessing 모듈에서 MinMaxScaler를 import
  2. MinMaxScaler 객체를 생성 ▶︎ 생성된 객체를 scaler 변수에 할당
  3. MinMaxScaler 객체에 train 데이터의 열(column)인 train.columns[2:-1]을 대상으로 fit() 함수를 호출 ▶︎ 최솟값과 최댓값을 기반으로 설정
    (train.columns[2:-1]은 index, quality, type을 제외한 2번째 열부터 마지막 열의 이전 열)
  4. 설정된 기반 정보를 바탕으로 train 데이터의 열을 transform() 함수를 통해 정규화
    정규화된 값을 train 데이터의 해당 열에 할당
    이를 통해 train 데이터의 특성 열이 min-max 정규화된 값으로 업데이트 끝!
  5. 정규화가 적용된 train 데이터프레임을 출력하여 변환된 결과를 확인

 

결과 예시

728x90