데이터 셋에 결측치가 있을 때 이를 대처하는 여러 방법이 있다. 이 중에서 결측치를 특정 값으로 대체하는 방법에 대해서 확인한다.
결측치들은 평균이나 중앙값, 최빈값으로 대체할 수 있다. SimpleImputer를 사용하여 결측치들을 대체한다.
from sklearn.impute import SimpleImputer
import pandas as pd
#평균값으로 대체
imputer = SimpleImputer(strategy = 'mean')
train_imputed = pd.DataFrame(imputer.fit_transform(train), columns=train.columns)
print("\n결측치 개수:\n", train_imputed.isnull().sum())
다음은 strategy에 들어갈 수 있는 값들이다.
| 대체 값 | 특징 |
| 'mean' | 평균값으로 대체한다. 이상치에 민감하기에 데이터 분포를 왜곡시킬 수 있다. 수치형 데이터가 정규분포를 따르는 경우에 사용하기 적절하다. |
| 'median' | 중앙값으로 대체한다. 이상치의 영향을 적게 받아 데이터 분포의 왜곡을 줄인다. 이상치가 많을 경우 사용하기 적절하다. |
| 'most_frequent' | 최빈값으로 대체한다. 수치형 뿐만 아니라 범주형에도 적용이 가능하다. 결측치가 많고 데이터가 희소한 경우에는 데이터셋을 왜곡할 수 있다. |
| 'constant' | imputer = SimpleImputer(strategy='constant', fill_value=0) 상황에 맞는 적절한 값을 입력하여 결측치를 대체할 수 있다. fill_value 매개변수와 같이 사용한다. |
| FunctionTransformer | 클래스를 선언하여 맞춤형 로직으로 결측치를 대체한다. 상황에 따른 함수를 지정하여 적절한 값으로 대체되게끔 한다. 복잡한 형식이나 패턴을 설정할 경우 적합하다. |
'머신러닝 > EDA' 카테고리의 다른 글
| [EDA] DBSCAN 기법 (4) | 2024.12.24 |
|---|---|
| [EDA] Z-score (6) | 2024.12.24 |
| [EDA] IQR(Interquartile Range, 사분범위) (3) | 2024.12.23 |
| [EDA] K-최근접 이웃(K-Nearest Neighbors, KNN) (1) | 2024.12.23 |
| [EDA] 결측치 예측 기반 탐색(Predictive Imputation) - IterativeImputer (4) | 2024.12.22 |