開始使用免費開始

以 KNN 填補類別值

當 DataFrame 中所有類別型欄位都轉換為序數值之後,這個 DataFrame 就可以進行填補。使用像 K-Nearest Neighbors(KNN)這類統計模型來填補,通常能得到更好的結果。

在這個練習中,你將:

  1. 使用 fancyimputeKNN() 函式,為已做序數編碼的 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] = ___
編輯並執行程式碼