以 KNN 填補類別值
當 DataFrame 中所有類別型欄位都轉換為序數值之後,這個 DataFrame 就可以進行填補。使用像 K-Nearest Neighbors(KNN)這類統計模型來填補,通常能得到更好的結果。
在這個練習中,你將:
- 使用
fancyimpute的KNN()函式,為已做序數編碼的 DataFrameusers填補遺漏值。 - 透過序數編碼器的
.inverse_transform()方法,將序數值轉回各自的原始類別。
請記住,ordinal_enc_dict 會為每個欄位儲存一個 sklearn 的 OrdinalEncoder()。
users DataFrame 會為每個欄位儲存其編碼後(序數)的數值。
KNN() 函式、包含多個 OrdinalEncoder() 的字典 ordinal_enc_dict,以及 users DataFrame 都已為你載入完成。
本練習屬於課程
在 Python 中處理遺漏值
練習說明
- 使用
KNN_imputer的fit_transform()方法對usersDataFrame 進行填補。將轉換後的值四捨五入為整數。 - 迭代
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] = ___