KNN-импутация категориальных значений
После того как все категориальные столбцы DataFrame преобразованы в порядковые значения, DataFrame готов к импутации. Такие статистические модели, как метод K ближайших соседей (KNN), позволяют получить более точные результаты импутации.
В этом упражнении вам нужно:
- Применить функцию
KNN()из библиотекиfancyimpute, чтобы заполнить пропущенные значения в DataFrameusers, закодированном с помощью порядкового кодирования. - Преобразовать порядковые значения обратно в соответствующие категории с помощью метода
.inverse_transform()порядкового кодировщика.
Напомним: ordinal_enc_dict хранит объекты OrdinalEncoder() из sklearn для каждого столбца, а DataFrame users — закодированные (порядковые) значения по каждому столбцу.
Функция KNN(), словарь OrdinalEncoder()-ов ordinal_enc_dict и DataFrame users уже загружены для вас.
Это упражнение является частью курса
Работа с пропущенными данными в Python
Инструкции к упражнению
- Выполните импутацию DataFrame
usersс помощью методаfit_transform()объектаKNN_imputer. Полученные значения округляются до целых чисел. - Переберите столбцы DataFrame
usersв цикле. - Выберите
OrdinalEncoder()нужного столбца изordinal_enc_dictи примените.inverse_transform()к преобразованному массивуreshaped.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Create KNN imputer
KNN_imputer = KNN()
# Impute 'users' DataFrame. It is rounded to get integer values
users_KNN_imputed.iloc[:, :] = np.round(___)
# Loop over the column names in 'users'
for col_name in ___:
# Reshape the column data
reshaped = users_KNN_imputed[col_name].values.reshape(-1, 1)
# Select the column's Encoder and perform inverse transform on 'reshaped'
users_KNN_imputed[col_name] = ___