开始使用免费开始使用

对分类值进行 KNN 插补

当 DataFrame 中所有分类列都被转换为序数值后,就可以进行插补了。使用 K-Nearest Neighbors(KNN)等统计模型进行插补,通常能得到更好的结果。

在本练习中,您将:

  1. 使用 fancyimpute 中的 KNN() 函数,对序数编码后的 DataFrame users 中的缺失值进行插补。
  2. 使用序数编码器的 .inverse_transform() 方法,将序数值转换回其对应的类别。

请记住,ordinal_enc_dict 为每一列保存了 sklearnOrdinalEncoder()users DataFrame 为每一列存储了编码后的值(序数值)。

KNN() 函数、保存各列 OrdinalEncoder() 的字典 ordinal_enc_dict,以及 users DataFrame 都已为您加载。

本练习是课程的一部分

在 Python 中处理缺失数据

查看课程

练习说明

  • 使用 KNN_imputerfit_transform() 方法对 users DataFrame 进行插补。将这些变换后的值四舍五入为整数。
  • 遍历 users 中的各列。
  • ordinal_enc_dict 中选取该列的 OrdinalEncoder(),并对重塑后的数组 reshaped 执行 .inverse_transform()

交互式实操练习

通过完成这段示例代码来试试这个练习。

# 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] = ___
编辑并运行代码