开始使用免费开始使用

kNN 技巧与提示 II:按变量排序

在对数据进行 k 近邻算法插补时,算法会逐个变量循环,对每个变量进行插补,并使用其他变量来计算观测之间的距离。其中有些变量可能在之前的步骤中已经被插补过。这意味着,如果数据中靠前的变量缺失值很多,那么后续的距离计算就会大量依赖已插补的值,从而给距离计算引入噪声。

因此,在进行 kNN 插补之前,最好按每个变量的缺失值数量从小到大对变量进行排序。这样,每次距离计算就能尽可能基于更多的观测数据、尽可能少的插补数据。

让我们在 tao 数据上试一试吧!

本练习是课程的一部分

R 中的缺失值填补处理

查看课程

练习说明

  • 在管道的第一部分,计算 tao 各列中的缺失值数量。
  • 然后按缺失值数量从小到大排序变量,提取其名称,并将结果赋给 vars_by_NAs
  • 使用 select() 根据 vars_by_NAs 中保存的顺序重新排列 tao 的变量。
  • 对重新排序后的数据执行 k 近邻插补,并将结果赋给 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")
编辑并运行代码