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


R recipes step_impute_median 使用中位数估算数值数据


step_impute_median() 创建配方步骤的规范,该步骤将用这些变量的训练集中值替换数值变量的缺失值。

用法

step_impute_median(
  recipe,
  ...,
  role = NA,
  trained = FALSE,
  medians = NULL,
  skip = FALSE,
  id = rand_id("impute_median")
)

step_medianimpute(
  recipe,
  ...,
  role = NA,
  trained = FALSE,
  medians = NULL,
  skip = FALSE,
  id = rand_id("impute_median")
)

参数

recipe

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

...

一个或多个选择器函数用于为此步骤选择变量。有关更多详细信息,请参阅selections()

role

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

trained

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

medians

一个命名的中位数数值向量。在由 prep() 计算之前,这是 NULL 。请注意,如果原始数据是整数,则中位数将转换为整数以保持相同的数据类型。

skip

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

id

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

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

细节

step_impute_median 根据 prep.recipetraining 参数中使用的数据估计变量中位数。 bake.recipe 然后使用这些中位数将新值应用于新数据集。

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

整理

当您 tidy() 此步骤时,将返回包含列 terms(选定的选择器或变量)和 model(中值)的小标题。

箱重

此步骤执行可以利用案例权重的无监督操作。因此,个案权重仅与频率权重一起使用。有关更多信息,请参阅 case_weights 中的文档和 tidymodels.org 中的示例。

也可以看看

例子

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)

impute_rec <- rec %>%
  step_impute_median(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, ]
#>      Status Seniority  Home Time Age Marital Records     Job Expenses
#> 28     good        15 owner   36  43 married      no   fixed       75
#> 688    good         2  rent   60  32 married      no partime       87
#> 1002   good        21  rent   60  39 married      no   fixed      124
#>      Income Assets Debt Amount Price
#> 28      251   4000    0   1800  2557
#> 688     115   2000    0   1250  1517
#> 1002    191   2000    0   2000  2536
imputed_te[missing_examples, names(credit_te)]
#> # A tibble: 3 × 14
#>   Status Seniority Home   Time   Age Marital Records Job   Expenses Income
#>   <fct>      <int> <fct> <int> <int> <fct>   <fct>   <fct>    <int>  <int>
#> 1 good          15 owner    36    43 married no      fixed       75    251
#> 2 good           2 rent     60    32 married no      part…       87    115
#> 3 good          21 rent     60    39 married no      fixed      124    191
#> # ℹ 4 more variables: Assets <int>, Debt <int>, Amount <int>, Price <int>

tidy(impute_rec, number = 1)
#> # A tibble: 3 × 3
#>   terms  value id                 
#>   <chr>  <dbl> <chr>              
#> 1 Income    NA impute_median_Hlm2y
#> 2 Assets    NA impute_median_Hlm2y
#> 3 Debt      NA impute_median_Hlm2y
tidy(imp_models, number = 1)
#> # A tibble: 3 × 3
#>   terms  value id                 
#>   <chr>  <dbl> <chr>              
#> 1 Income   125 impute_median_Hlm2y
#> 2 Assets  3000 impute_median_Hlm2y
#> 3 Debt       0 impute_median_Hlm2y
源代码:R/impute_median.R

相关用法


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