当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R recipes step_impute_bag 通过袋装树进行插补


step_impute_bag() 创建配方步骤的规范,该步骤将创建袋装树模型来估算丢失的数据。

用法

step_impute_bag(
  recipe,
  ...,
  role = NA,
  trained = FALSE,
  impute_with = imp_vars(all_predictors()),
  trees = 25,
  models = NULL,
  options = list(keepX = FALSE),
  seed_val = sample.int(10^4, 1),
  skip = FALSE,
  id = rand_id("impute_bag")
)

step_bagimpute(
  recipe,
  ...,
  role = NA,
  trained = FALSE,
  impute_with = imp_vars(all_predictors()),
  trees = 25,
  models = NULL,
  options = list(keepX = FALSE),
  seed_val = sample.int(10^4, 1),
  skip = FALSE,
  id = rand_id("impute_bag")
)

imp_vars(...)

参数

recipe

一个菜谱对象。该步骤将添加到此配方的操作序列中。

...

一个或多个选择器函数用于选择要估算的变量。当与 imp_vars 一起使用时,这些点指示哪些变量用于预测每个变量中的缺失数据。有关更多详细信息,请参阅selections()

role

由于没有创建新变量,因此此步骤未使用。

trained

指示预处理数量是否已估计的逻辑。

impute_with

调用 imp_vars 来指定使用哪些变量来插补变量,这些变量可以包含由逗号或不同选择器分隔的特定变量名称(请参阅 selections() )。如果某个列同时包含在要插补的列表和插补预测变量的列表中,则该列将从后者中删除,并且不会用于插补本身。

trees

每个模型中使用的袋装树数量的整数。

models

一旦 prep() 训练了这个 bagged 树,ipred::ipredbagg() 对象就会存储在这里。

options

ipred::ipredbagg() 的选项列表。参数 nbaggkeepX 设置为默认值,但可以传入其他参数。请注意,不应在此处传递参数 Xy

seed_val

用于创建可重现模型的整数。所有插补模型都使用相同的种子。

skip

一个合乎逻辑的。当bake() 烘焙食谱时是否应该跳过此步骤?虽然所有操作都是在 prep() 运行时烘焙的,但某些操作可能无法对新数据进行(例如处理结果变量)。使用skip = TRUE时应小心,因为它可能会影响后续操作的计算。

id

该步骤特有的字符串,用于标识它。

recipe 的更新版本,将新步骤添加到任何现有操作的序列中。

细节

对于每个需要插补的变量,都会创建一个袋装树,其中结果是感兴趣的变量,预测变量是 impute_with 公式中列出的任何其他变量。 bagged 树的优点之一是它可以接受本身具有缺失值的预测变量。当感兴趣的变量(和预测变量)是数值变量或分类变量时,可以使用此插补方法。估算的分类变量将保持分类。此外,整数也将被归算为整数。

请注意,如果要估算的变量也在 impute_with 中,则该变量将被忽略。

如果大多数(或全部)插补变量也缺失,则插补后可能仍会出现缺失值。

recipes 0.1.16 开始,该函数名称从 step_bagimpute() 更改为 step_impute_bag()

整理

当您tidy()此步骤时,将返回包含列terms(选择的选择器或变量)和model(袋装树对象)的tibble。

调整参数

此步骤有 1 个调整参数:

  • trees : # 树(类型:整数,默认值:25)

箱重

底层操作不允许使用案例权重。

参考

库恩,M. 和约翰逊,K. (2013)。应用预测建模。施普林格出版社。

也可以看看

例子

data("credit_data", package = "modeldata")

## missing data per column
vapply(credit_data, function(x) mean(is.na(x)), c(num = 0))
#>       Status    Seniority         Home         Time          Age 
#> 0.0000000000 0.0000000000 0.0013471037 0.0000000000 0.0000000000 
#>      Marital      Records          Job     Expenses       Income 
#> 0.0002245173 0.0000000000 0.0004490346 0.0000000000 0.0855410867 
#>       Assets         Debt       Amount        Price 
#> 0.0105523125 0.0040413112 0.0000000000 0.0000000000 

set.seed(342)
in_training <- sample(1:nrow(credit_data), 2000)

credit_tr <- credit_data[in_training, ]
credit_te <- credit_data[-in_training, ]
missing_examples <- c(14, 394, 565)

rec <- recipe(Price ~ ., data = credit_tr)
if (FALSE) {
impute_rec <- rec %>%
  step_impute_bag(Status, Home, Marital, Job, Income, Assets, Debt)

imp_models <- prep(impute_rec, training = credit_tr)

imputed_te <- bake(imp_models, new_data = credit_te, everything())

credit_te[missing_examples, ]
imputed_te[missing_examples, names(credit_te)]

tidy(impute_rec, number = 1)
tidy(imp_models, number = 1)

## Specifying which variables to imputate with

impute_rec <- rec %>%
  step_impute_bag(Status, Home, Marital, Job, Income, Assets, Debt,
    impute_with = imp_vars(Time, Age, Expenses),
    # for quick execution, nbagg lowered
    options = list(nbagg = 5, keepX = FALSE)
  )

imp_models <- prep(impute_rec, training = credit_tr)

imputed_te <- bake(imp_models, new_data = credit_te, everything())

credit_te[missing_examples, ]
imputed_te[missing_examples, names(credit_te)]

tidy(impute_rec, number = 1)
tidy(imp_models, number = 1)
}
源代码:R/impute_bag.R

相关用法


注:本文由纯净天空筛选整理自Max Kuhn等大神的英文原创作品 Impute via bagged trees。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。