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


R recipes step_nzv 近零方差滤波器


step_nzv() 创建配方步骤的规范,该步骤可能会删除高度稀疏和不平衡的变量。

用法

step_nzv(
  recipe,
  ...,
  role = NA,
  trained = FALSE,
  freq_cut = 95/5,
  unique_cut = 10,
  options = list(freq_cut = 95/5, unique_cut = 10),
  removals = NULL,
  skip = FALSE,
  id = rand_id("nzv")
)

参数

recipe

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

...

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

role

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

trained

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

freq_cut, unique_cut

过滤过程的数字参数。请参阅下面的详细信息部分。

options

过滤器的选项列表(请参阅下面的详细信息)。

removals

包含应删除的列名称的字符串。这些值直到调用 prep() 后才确定。

skip

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

id

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

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

细节

此步骤可能会从数据集中删除列。如果通过名称专门引用缺失的列,这可能会导致配方中的后续步骤出现问题。为了避免这种情况,请参阅 selections 的“保存配方和过滤列的提示”部分中的建议。

此步骤诊断具有一个唯一值的预测变量(即零方差预测变量)或具有以下两个特征的预测变量:

  1. 相对于样本数量,它们具有很少的唯一值,并且

  2. 最常见值的频率与第二常见值的频率之比很大。

例如,近零方差预测器的一个示例是,对于 1000 个样本,具有两个不同的值,其中 999 个是单个值。

要进行标记,首先,最常见值相对于第二最常见值(称为 "frequency ratio")的频率必须高于 freq_cut 。其次,“唯一值的百分比”,即唯一值的数量除以样本总数(乘以 100),也必须低于 unique_cut

在上面的示例中,频率比为 999,唯一值百分比为 0.2%。

整理

当您tidy()此步骤时,将返回带有列terms(将被删除的列)的tibble。

调整参数

此步骤有 2 个调整参数:

  • freq_cut:频率分布比(类型:double,默认:95/5)

  • unique_cut:% 唯一值(类型:double,默认值:10)

箱重

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

也可以看看

其他变量过滤步骤:step_corr()step_filter_missing()step_lincomb()step_rm()step_select()step_zv()

例子

data(biomass, package = "modeldata")

biomass$sparse <- c(1, rep(0, nrow(biomass) - 1))

biomass_tr <- biomass[biomass$dataset == "Training", ]
biomass_te <- biomass[biomass$dataset == "Testing", ]

rec <- recipe(HHV ~ carbon + hydrogen + oxygen +
  nitrogen + sulfur + sparse,
data = biomass_tr
)

nzv_filter <- rec %>%
  step_nzv(all_predictors())

filter_obj <- prep(nzv_filter, training = biomass_tr)

filtered_te <- bake(filter_obj, biomass_te)
any(names(filtered_te) == "sparse")
#> [1] FALSE

tidy(nzv_filter, number = 1)
#> # A tibble: 1 × 2
#>   terms            id       
#>   <chr>            <chr>    
#> 1 all_predictors() nzv_evI1V
tidy(filter_obj, number = 1)
#> # A tibble: 1 × 2
#>   terms  id       
#>   <chr>  <chr>    
#> 1 sparse nzv_evI1V
源代码:R/nzv.R

相关用法


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