НачатьНачать бесплатно

KNN-импутация категориальных значений

После того как все категориальные столбцы DataFrame преобразованы в порядковые значения, DataFrame готов к импутации. Такие статистические модели, как метод K ближайших соседей (KNN), позволяют получить более точные результаты импутации.

В этом упражнении вам нужно:

  1. Применить функцию KNN() из библиотеки fancyimpute, чтобы заполнить пропущенные значения в DataFrame users, закодированном с помощью порядкового кодирования.
  2. Преобразовать порядковые значения обратно в соответствующие категории с помощью метода .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] = ___
Редактировать и запускать код