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")