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

Python에서 scikit-learn 라이브러리를 활용한 데이터 전처리 방법

데이터 전처리(pre-processing)란 데이터를 정제하고, 유효하지 않은 데이터나 노이즈를 제거하며, 데이터를 적절한 값으로 대체하는 등의 일련의 작업을 의미합니다.

전처리 대상은 텍스트 데이터에 국한되지 않습니다. 이미지나 동영상 처리 역시 전처리에 포함될 수 있으며, 머신러닝 파이프라인에서 빼놓을 수 없는 핵심 단계입니다.

데이터 전처리란 무엇인가?

데이터 전처리는 기본적으로 다양한 소스(또는 단일 소스)에서 수집한 모든 데이터를 공통 형식 혹은 균일한 데이터셋으로 통합하는 작업을 말합니다.

이 과정을 거치는 이유는 학습 알고리즘이 데이터셋으로부터 효과적으로 학습하여 높은 정확도의 결과를 도출할 수 있도록 하기 위함입니다. 실제 환경의 데이터는 결코 이상적이지 않기 때문에 누락된 값, 오류, 이상치(outlier), 컬럼 간 불일치 등 다양한 문제가 존재할 가능성이 높습니다.

때로는 이미지가 제대로 정렬되지 않았거나, 선명하지 않거나, 크기가 지나치게 큰 경우도 있습니다. 전처리의 목표는 바로 이러한 불일치와 오류를 제거하는 것입니다.

데이터 전처리는 단일 작업이 아니라 단계별로 수행되는 여러 작업의 집합입니다. 한 단계의 출력값이 다음 단계의 입력값이 되는 방식으로 순차적으로 진행됩니다.

예제: 숫자 값을 부울(Boolean) 값으로 변환하기

다음은 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_binarized = preprocessing.Binarizer(threshold=0.5).transform(input_data)
print("Values converted from numeric to Boolean :\n", data_binarized)

실행 결과

Values converted from numeric to Boolean :
[[1. 1. 0.]
[0. 1. 0.]
[0. 0. 1.]
[1. 1. 0.]]

코드 설명

  • 필요한 패키지(numpy, sklearn.preprocessing)를 임포트합니다.
  • Numpy 라이브러리를 사용해 입력 데이터를 배열 형태로 생성합니다.
  • sklearn의 'preprocessing' 클래스에 포함된 'Binarizer' 함수를 사용해 숫자 값을 부울 값으로 변환합니다. 임계값(threshold)은 0.5로 설정되어 있습니다.
  • 부울 값이란 기본적으로 1과 0만을 의미합니다. 임계값보다 큰 값은 1로, 그 외의 값은 0으로 변환됩니다.
  • 최종적으로 변환된 데이터가 콘솔에 출력됩니다.