# 데이터 전처리 ## 데이터 전처리 유형 - [[데이터 형식]] data formatting: 데이터가 작업하기에 적당한 형식이 아닐 수 있다. 예를 들어 데이터는 자체 파일 형식으로 제공될 수 있고, 사용자가 가장 좋아하는 머신러닝 알고리즘은 이를 이해하지 못할 수도 있다. - [[데이터 정제]] data cleaning: 데이터에 유효하지 않거나 누락된 항목이 포함될 수 있다. 이러한 항목은 정제하거나 제거해야 한다. - [[데이터 샘플링]] data sampling: 데이터가 특정 목적에 비해 너무 클 수 있으므로 데이터를 현명한 방식으로 샘플링해야 한다. ## 데이터 전처리 방법 - [[확장]] scaling: 특정 머신러닝 알고리즘은 종종 데이터가 평균 범위와 단위 분산을 갖고 일반적인 버무이 내에 있어야 한다. 확장은 모든 기능(물리적 단위가 다를 수 있음)을 일반적인 값 범위로 변경해서 가져오는 프로세스다. - [[분해]] decomposition: 데이터 세트에는 처리할 수 있는 것보다 더 많은 기능이 포함되는 경우가 많다. [[특징 분해]] feature decomposition 는 좀 더 적은 수의 매우 유익한 데이터 컴포넌트로 데이터를 압축하는 프로세스다. - [[집계]] aggregation: 때로는 여러 기능을 하나의 의미 있는 그룹으로 그룹화할 수 있다. 예를 들어 데이터베이스에는 웹 기반 시스템에 로그인한 각 사용자의 날짜와 시간이 포함될 수 있다. 작업에 따라 다르겠지만 사용자다 로그인한 횟수의 계산을 고려하면 이 데이터를 더 많이 이해할 수 있다. ### 특징 표준화 from sklearn import preprocessing import numpy as np X = np.array([[1, -2, 2],[3,0,0], [0,1,-1]]) X_scaled = preprocessing.scale(X) ### 특징 정규화 X_normalized_l1 = preprocessing.normalize(X, norm='l1') X_normalized_l2 = preprocessing.normalize(X, norm='l2') ### 특징의 범위 확장 min_max_scaler = preprocessing.MinMaxScaler() X_min_max = min_max_scaler.fit_transform(X) min_max_scaler = preprocessing.MinMaxScaler(feature_range = (-10,10)) X_min_max = min_max_scaler.fit_transform(X) ### 특징 이진화 binarizer = preprocessing.Binarizer(threshold=0.5) X_binarized = binarizer.transform(X) ### 누락된 데이터 처리 [[scikit-learn]]에서는 누락된 값을 대체하는 3가지 방법 - [[mean]]: 모든 [[nan]]값을 행렬의 지정된 축을 따라 평균값으로 바꾼다. (기본값 axis=0) - [[median]]: 모든 nan값을 행렬의 지정된 축을 따라 중앙값으로 바꾼다. (기본값 axis=0) - [[most_frequent]]: 모든 nan값을 행렬의 지정된 축을 따라 가장 빈버낳ㄴ 값으로 대체한다. (기본값 axis=0) from sklearn.impute import SimpleImputer imp = SimpleImputer(strategy='mean') X2 = imp.fit_transform(X) imp = SimpleImputer(strategy='median') X3 = imp.fit_transform(X)