step_impute_knn()
创建配方步骤的规范,该步骤将使用最近邻居来估算缺失数据。
用法
step_impute_knn(
recipe,
...,
role = NA,
trained = FALSE,
neighbors = 5,
impute_with = imp_vars(all_predictors()),
options = list(nthread = 1, eps = 1e-08),
ref_data = NULL,
columns = NULL,
skip = FALSE,
id = rand_id("impute_knn")
)
step_knnimpute(
recipe,
...,
role = NA,
trained = FALSE,
neighbors = 5,
impute_with = imp_vars(all_predictors()),
options = list(nthread = 1, eps = 1e-08),
ref_data = NULL,
columns = NULL,
skip = FALSE,
id = rand_id("impute_knn")
)
参数
- recipe
-
一个菜谱对象。该步骤将添加到此配方的操作序列中。
- ...
-
一个或多个选择器函数用于选择要估算的变量。当与
imp_vars
一起使用时,这些点指示哪些变量用于预测每个变量中的缺失数据。有关更多详细信息,请参阅selections()
。 - role
-
由于没有创建新变量,因此此步骤未使用。
- trained
-
指示预处理数量是否已估计的逻辑。
- neighbors
-
邻居的数量。
- impute_with
-
调用
imp_vars
来指定使用哪些变量来插补变量,这些变量可以包含由逗号或不同选择器分隔的特定变量名称(请参阅selections()
)。如果某个列同时包含在要插补的列表和插补预测变量的列表中,则该列将从后者中删除,并且不会用于插补本身。 - options
-
要传递给
gower::gower_topn()
的命名选项列表。当前可用选项为nthread
和eps
。 - ref_data
-
一组数据,将反映在此插补步骤之前完成的数据预处理。在
prep()
训练该步骤之前,这是NULL
。 - columns
-
所选变量名称的字符串。该字段是一个占位符,一旦使用
prep()
就会被填充。 - skip
-
一个合乎逻辑的。当
bake()
烘焙食谱时是否应该跳过此步骤?虽然所有操作都是在prep()
运行时烘焙的,但某些操作可能无法对新数据进行(例如处理结果变量)。使用skip = TRUE
时应小心,因为它可能会影响后续操作的计算。 - id
-
该步骤特有的字符串,用于标识它。
细节
该步骤使用训练集来估算任何其他数据集。唯一可用的距离函数是高尔距离,它可用于标称数据和数值数据的混合。
一旦确定了最近邻,该众数将用于预测名义变量,而平均值将用于数值数据。请注意,如果基础数据是整数,平均值也会转换为整数。
请注意,如果要估算的变量也在 impute_with
中,则该变量将被忽略。
如果大多数(或全部)插补变量也缺失,则插补后可能仍会出现缺失值。
从 recipes
0.1.16 开始,该函数名称从 step_knnimpute()
更改为 step_impute_knn()
。
整理
当您tidy()
此步骤时,将返回包含列terms
(用于插补的选择器或变量)、predictors
(用于插补的变量)和neighbors
的小标题。
也可以看看
其他插补步骤: step_impute_bag()
、 step_impute_linear()
、 step_impute_lower()
、 step_impute_mean()
、 step_impute_median()
、 step_impute_mode()
、 step_impute_roll()
例子
library(recipes)
data(biomass, package = "modeldata")
biomass_tr <- biomass[biomass$dataset == "Training", ]
biomass_te <- biomass[biomass$dataset == "Testing", ]
biomass_te_whole <- biomass_te
# induce some missing data at random
set.seed(9039)
carb_missing <- sample(1:nrow(biomass_te), 3)
nitro_missing <- sample(1:nrow(biomass_te), 3)
biomass_te$carbon[carb_missing] <- NA
biomass_te$nitrogen[nitro_missing] <- NA
rec <- recipe(
HHV ~ carbon + hydrogen + oxygen + nitrogen + sulfur,
data = biomass_tr
)
ratio_recipe <- rec %>%
step_impute_knn(all_predictors(), neighbors = 3)
ratio_recipe2 <- prep(ratio_recipe, training = biomass_tr)
imputed <- bake(ratio_recipe2, biomass_te)
# how well did it work?
summary(biomass_te_whole$carbon)
#> Min. 1st Qu. Median Mean 3rd Qu. Max.
#> 27.80 44.24 47.30 47.96 49.00 79.34
cbind(
before = biomass_te_whole$carbon[carb_missing],
after = imputed$carbon[carb_missing]
)
#> before after
#> [1,] 46.83 47.43000
#> [2,] 47.80 47.53333
#> [3,] 46.40 46.21000
summary(biomass_te_whole$nitrogen)
#> Min. 1st Qu. Median Mean 3rd Qu. Max.
#> 0.010 0.295 0.690 1.092 1.450 4.790
cbind(
before = biomass_te_whole$nitrogen[nitro_missing],
after = imputed$nitrogen[nitro_missing]
)
#> before after
#> [1,] 1.24 0.59333333
#> [2,] 0.30 0.92333333
#> [3,] 0.06 0.04666667
tidy(ratio_recipe, number = 1)
#> # A tibble: 1 × 4
#> terms predictors neighbors id
#> <chr> <chr> <dbl> <chr>
#> 1 all_predictors() NA 3 impute_knn_iyPXM
tidy(ratio_recipe2, number = 1)
#> # A tibble: 20 × 4
#> terms predictors neighbors id
#> <chr> <chr> <dbl> <chr>
#> 1 carbon hydrogen 3 impute_knn_iyPXM
#> 2 carbon oxygen 3 impute_knn_iyPXM
#> 3 carbon nitrogen 3 impute_knn_iyPXM
#> 4 carbon sulfur 3 impute_knn_iyPXM
#> 5 hydrogen carbon 3 impute_knn_iyPXM
#> 6 hydrogen oxygen 3 impute_knn_iyPXM
#> 7 hydrogen nitrogen 3 impute_knn_iyPXM
#> 8 hydrogen sulfur 3 impute_knn_iyPXM
#> 9 oxygen carbon 3 impute_knn_iyPXM
#> 10 oxygen hydrogen 3 impute_knn_iyPXM
#> 11 oxygen nitrogen 3 impute_knn_iyPXM
#> 12 oxygen sulfur 3 impute_knn_iyPXM
#> 13 nitrogen carbon 3 impute_knn_iyPXM
#> 14 nitrogen hydrogen 3 impute_knn_iyPXM
#> 15 nitrogen oxygen 3 impute_knn_iyPXM
#> 16 nitrogen sulfur 3 impute_knn_iyPXM
#> 17 sulfur carbon 3 impute_knn_iyPXM
#> 18 sulfur hydrogen 3 impute_knn_iyPXM
#> 19 sulfur oxygen 3 impute_knn_iyPXM
#> 20 sulfur nitrogen 3 impute_knn_iyPXM
相关用法
- R recipes step_impute_mean 使用平均值估算数值数据
- R recipes step_impute_roll 使用滚动窗口统计估算数值数据
- R recipes step_impute_mode 使用最常见的值估算名义数据
- R recipes step_impute_lower 估算低于测量阈值的数值数据
- R recipes step_impute_bag 通过袋装树进行插补
- R recipes step_impute_median 使用中位数估算数值数据
- R recipes step_impute_linear 通过线性模型估算数值变量
- R recipes step_inverse 逆变换
- R recipes step_ica ICA 信号提取
- R recipes step_indicate_na 创建缺失数据列指示器
- R recipes step_integer 将值转换为预定义的整数
- R recipes step_intercept 添加截距(或常数)列
- R recipes step_interact 创建交互变量
- R recipes step_invlogit 逆 Logit 变换
- R recipes step_isomap 等位图嵌入
- R recipes step_unknown 将缺失的类别分配给“未知”
- R recipes step_relu 应用(平滑)修正线性变换
- R recipes step_poly_bernstein 广义伯恩斯坦多项式基
- R recipes step_pls 偏最小二乘特征提取
- R recipes step_ratio 比率变量创建
- R recipes step_geodist 两个地点之间的距离
- R recipes step_nzv 近零方差滤波器
- R recipes step_nnmf 非负矩阵分解信号提取
- R recipes step_normalize 中心和比例数值数据
- R recipes step_depth 数据深度
注:本文由纯净天空筛选整理自Max Kuhn等大神的英文原创作品 Impute via k-nearest neighbors。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。