KNNImputer
는 sklearn의 패키지 중 하나
로, 결측치를 채우는 방법으로 실무에서도 많이 쓰인다는 방법이다.
앞서 소개했던 df.fillna(), df.interpolate 또는 SimpleImputer와 다르게 마땅히 결측치를 채울 방법이 떠오르지 않을 때 사용
한다.
cf) https://velog.io/@songjeongwoo/%EA%B2%B0%EC%B8%A1%EC%B9%98-%EC%A1%B0%EC%B9%98-aq300kcu
KNNImputer는 가변수화가 반드시 선행
되어야한다.
KNNImputer는 KNN 알고리즘을 사용
하여 결측치를 채우는 방식이다.
즉, 가까운 이웃의 수
를 정하고 그 이웃들을 이용하여 결측치를 채우는 방식
이다.
따라서 KNN 알고리즘은 거리가 중요
하다.
데이터를 불러와서 x와 y분리, train, val 셋 분리, 가변수화 등 모두 되어있다고 가정한다.
사용된 데이터 출처: https://www.kaggle.com/c/titanic
from sklearn.impute import KNNImputer
cf) https://scikit-learn.org/stable/modules/generated/sklearn.impute.KNNImputer.html
# n_neighbors=5(디폴트 값)
imputer = KNNImputer(n_neighbors=3)
imputer를 선언할 때 n_neighbors 하이퍼파라미터를 이용해 몇 개의 이웃을 사용할 지 지정한다.
cf) n_neighbors=5가 디폴트 값
이다.
cols = x_train.columns
KNNImputer를 거치면
데이터가 np array
가 되기때문에 확인을 위해선 pd.DataFrame()을 사용
해야한다.
이때 사용할 x_train의 column명들을 cols 변수에
담아둔다.
x_train.info()
x_train = imputer.fit_transform(x_train)
x_val = imputer.transform(x_val)
x_train = pd.DataFrame(x_train, columns=cols)
x_train.tail(2)
x_train.info()