Найти в Дзене

Заполнение пропусков методом К-ближайших соседей.

from sklearn.impute import KNNImputer imputer=KNNImputer(n_neighbors=5, weights='uniform') imputer.fit(df) imputer.transform(df) Простой код, но к сожалению его нельзя применить на неподготовленном датасете. Метод не работает со строковыми значениями. А еще он основан на "расстоянии" между ближайшими соседями. Значит данные нужно нормализовать перед использованием. Простой способ избавиться от текстовых категорий - "One Hot Encoding" cat_variables = df[['Geography', 'Gender']] cat_dummies = pd.get_dummies(cat_variables, drop_first=True) Чтобы сохранить оригинальный датасет, лучше использовать копию для дальнейших манипуляций. df_knn = df.drop(['Geography', 'Gender'], axis=1) df_knn = pd.concat([df_knn, cat_dummies], axis=1) Для нормализации можно использовать StandardScaler или MinMaxScaler. from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() df_knn = pd.DataFrame(scaler.fit_transform(df_knn), columns = df_knn.columns) Ну вот теперь то уже можно использовать метод за

from sklearn.impute import KNNImputer

imputer=KNNImputer(n_neighbors=5, weights='uniform')

imputer.fit(df)

imputer.transform(df)

Простой код, но к сожалению его нельзя применить на неподготовленном датасете. Метод не работает со строковыми значениями. А еще он основан на "расстоянии" между ближайшими соседями. Значит данные нужно нормализовать перед использованием.

Простой способ избавиться от текстовых категорий - "One Hot Encoding"

cat_variables = df[['Geography', 'Gender']]

cat_dummies = pd.get_dummies(cat_variables, drop_first=True)

Чтобы сохранить оригинальный датасет, лучше использовать копию для дальнейших манипуляций.

df_knn = df.drop(['Geography', 'Gender'], axis=1)

df_knn = pd.concat([df_knn, cat_dummies], axis=1)

Для нормализации можно использовать StandardScaler или MinMaxScaler.

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()

df_knn = pd.DataFrame(scaler.fit_transform(df_knn), columns = df_knn.columns)

Ну вот теперь то уже можно использовать метод заполнения пропусков К-ближайшими соседями.

df_knn = pd.DataFrame(imputer.fit_transform(df_knn), columns = df_knn.columns)

А все заполненные значения перекинуть в оригинальный датасет для дальнейшего использования.