開始使用免費開始

kNN 小技巧 II:變數排序

當 k-Nearest Neighbors 演算法逐一巡訪資料中的變數進行插補時,會用其他變數來計算觀測值之間的距離,而其中有些變數在先前步驟中已經被插補。這代表如果資料中較前面的變數有很多遺漏值,後續的距離計算就會大量依賴插補後的數值。這會為距離計算帶來雜訊。

因此,在執行 kNN 插補前,先依遺漏值數量由小到大排序變數 是個好做法。如此一來,每次距離計算都能盡量基於已觀測到的資料,並盡量少用插補後的資料。

我們把這個做法用在 tao 資料上試試看吧!

本練習屬於課程

在 R 中以插補處理遺漏值

檢視課程

練習說明

  • 在 pipeline 的第一部分計算 tao 每一欄的遺漏值數量。
  • 接著,依遺漏值數量「由小到大」排序變數,取出它們的名稱,並將結果指定給 vars_by_NAs
  • 使用 select()vars_by_NAs 中儲存的順序重新排列 tao 的變數。
  • 對重新排序後的資料執行 k-Nearest Neighbors 插補,並將結果指定給 tao_imp

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Get tao variable names sorted by number of NAs
vars_by_NAs <- tao %>%
  ___ %>%
  colSums() %>%
  sort(decreasing = ___) %>% 
  names()

# Sort tao variables and feed it to kNN imputation
tao_imp <- tao %>% 
  select(___) %>% 
  ___()

tao_imp %>% 
	select(sea_surface_temp, humidity, humidity_imp) %>% 
	marginplot(delimiter = "imp")
編輯並執行程式碼