-
데이터 전처리와 최적화2 - 데이터 변환/데이터 정제/데이터 통합/데이터 불균형아가개발자/머신러닝 2020. 9. 15. 21:48
데이터 변환(Data Transformation)
- 데이터가 가진 특성들을 비교하여 데이터 패턴을 찾을 때, 특성 간 스케일 차이가 심하면 패턴을 찾는데 문제가 발생하기 때문에 변환이 필요함 (정규화, 로그, 평균값 계산 등을 이용하여 데이터를 구간 화 하는 작업)
- 표준화 (Standardization): 데이터 특성이 Bell Shape 분포를 보이거나, 이상치 (노이즈 등)가 있을 때 유용
- 정규화 (Normalization): 정규화가 표준화보다 대체로 유용
데이터 정제(Data Cleaning)
- 없는 데이터를 채우고, 잡음 데이터 제거, 모순 데이터 교정을 하는 작업
- 결측 데이터 채우기
from numpy import * import numpy as np x_miss = np.array([[1,2,3,None], [5, np. NAN, 7,8],[None, 10,11,12], [13,np.nan,15,16]]) x_miss """ array([[1, 2, 3, None], [5, nan, 7, 8], [None, 10, 11, 12], [13, nan, 15, 16]], dtype=object) """
from sklearn.impute import SimpleImputer im = SimpleImputer(strategy='mean') # mean = 평균 / median = 중위수 / most frequent value = 최빈수 # dropna(), fillna() = 결측 데이터 0으로 채우기 im.fit(x_miss)
데이터 통합(Data Integration)
- 여러 개의 데이터 파일을 하나로 합치는 과정
import pandas as pd df1 = pd.read_csv("train.csv", engine = 'python') df2 = pd.read_csv("store.csv",engine ='python') df = pd.merge(df1,df2,on='Store') # Store를 기준으로 병합
데이터 불균형(Data Imbalance)
- 특정 클래스의 관측치가 다른 클래스에 비해 매우 낮게 나타나는 데이터 불균형 현상을 해소하기 위한 기법
# 데이터 생성 from collections import Counter from sklearn.datasets import make_classification X, y = make_classification(n_classes = 3, weights=[0.03, 0.07, 0.9], n_features=2, n_informative = 2, n_redundant=0, n_clusters_per_class=1, n_samples=200, random_state = 10) # matplotlib로 그래프 그리기 import matplotlib.pyplot as plt plt.scatter(X[:,0], X[:,1], marker='o', c=y, s=100, edgecolor="k", linewidth = 1) plt.xlabel("$X_1$") plt.ylabel("$X_2$")
더보기<sklearn.datasets.make_classification>
<matplotlib.pyplot.scatter>
- 과소 표집(Undersampling)
#NearMiss사용 from imblearn.under_sampling import NearMiss undersample = NearMiss(version = 3, n_neighbors_ver3 = 3) X_Under, y_Under = undersample.fit_resample(X, y)
- 과대 표집(Oversampling)
from imblearn.over_sampling import SMOTE, ADASYN #SMOTE 방법론 sm = SMOTE(random_state=42) X_res, y_res = sm.fit_resample(X,y) #ADASYN 방법론 ada = ADASYN(random_state=0) X_syn, y_syn = ada.fit_resample(X,y)
'아가개발자 > 머신러닝' 카테고리의 다른 글
로지스틱 회귀-Logistic regression (0) 2020.09.28 다중선형회귀 - Multiple Linear Regression (0) 2020.09.28 KNN classification - iris (0) 2020.09.18 K-최근접 이웃(KNN: K-Nearest Neighbors) (0) 2020.09.18 데이터 전처리와 최적화 - 데이터 실수화 (Data Vectorization) (0) 2020.09.15