[Python] sklearn.impute (NA handling)
※ impute
- 데이터 안의 NA값을 대치하는 데 사용
- 하나의 데이터프레임 안에 연속형변수와 범주형변수 둘 다 있을 경우 데이터를 따로 나누어 진행.
- e.g. 범주형변수에는 most_frequent, 연속형변수에는 mean 적용…
- 사용 조건
- 결측이 소수 컬럼에 쏠리면 안됨
- 특징 간에 관계가 존재해야 함
- 단점: 다른 결측치 처리 방법에 비해 시간이 오래 걸림
■ SimpleImputer
- NA값을 특정 값으로 대치함 / 평균, 중앙값, 최빈값, 사용자 지정값 등
□ 라이브러리 호출
> from sklearn.impute import SimpleImputer
□ NA Imputing
- parameter
- strategy: 대표 통계량 지정 {‘mean’, ‘most_frequent’, ‘median’, ‘constant’ }
# 기본 구조
# 인스턴스화
> SI = SimpleImputer(strategy = 'mean', ...)
# 모델 학습
> SI.fit(X_train)
# e.g.
> SI = SimpleImputer(strategy = 'mean', ...) # 인스턴스화
> SI.fit(X_train) # 모델 학습
# Data Frame 형태로 변환 (sklearn의 인스턴스 출력은 ndarray 형태이므로.)
> X_train = pd.DataFrame(SI.transform(X_train), columns = X_train.columns)
> X_test = pd.DataFrame(SI.transform(X_test), columns = X_test.columns)
■ KNNImputer
- NA가 아닌 값만 사용하여 이웃을 구한 뒤, 이웃들 값의 대표값으로 NA를 대체하는 결측치 예측 모델
■ 라이브러리 호출
> from sklearn.impute import KNNImputer
□ NA Imputing
- parameter
- n_neighbors: 이웃 수 (너무 적으면 정상적으로 이뤄지지 않을 수 있으므로 5정도가 적절함)
# 기본 구조
# 인스턴스화
> KI = KNNImputer(n_neighbors = 5, ...)
# 모델 학습
> KI.fit(X_train)
# e.g.
> KI = KNNImputer(n_neighbors = 5) # 인스턴스화
> KI.fit(X_train) # 모델 학습
# Data Frame 형태로 변환 (sklearn의 인스턴스 출력은 ndarray 형태이므로.)
> X_train = pd.DataFrame(KI.transform(X_train), columns = X_train.columns)
> X_test = pd.DataFrame(KI.transform(X_test), columns = X_test.columns)
# NA 확인
> X_train.isnull().sum()
> X_test.isnull().sum()
댓글남기기