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


R recipes step_corr 高相关滤波器


step_corr() 创建配方步骤的规范,该步骤可能会删除与其他变量具有较大绝对相关性的变量。

用法

step_corr(
  recipe,
  ...,
  role = NA,
  trained = FALSE,
  threshold = 0.9,
  use = "pairwise.complete.obs",
  method = "pearson",
  removals = NULL,
  skip = FALSE,
  id = rand_id("corr")
)

参数

recipe

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

...

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

role

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

trained

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

threshold

绝对相关值的阈值。该步骤将尝试删除最小数量的列,以便所有生成的绝对相关性都小于该值。

use

stats::cor() 函数的 use 参数的字符串。

method

stats::cor() 函数的 method 参数的字符串。

removals

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

skip

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

id

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

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

细节

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

此步骤尝试删除变量以保持变量之间的最大绝对相关性小于 threshold

当列具有单个唯一值时,该列将从相关性分析中排除。此外,如果数据集存在零星缺失值(并且选择了不适当的值use),某些列也将从过滤器中排除。

如果方案中使用了案例权重,则参数 usemethod 不会生效。

整理

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

调整参数

此步骤有 1 个调整参数:

  • threshold:阈值(类型:double,默认值:0.9)

箱重

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

也可以看看

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

作者

过滤算法的原始 R 代码由 Dong Li 编写,由 Max Kuhn 修改。 Reynald Lescarbeau 的贡献(原版位于 caret 包中)。 Max Kuhn 用于 step 函数。

例子

data(biomass, package = "modeldata")

set.seed(3535)
biomass$duplicate <- biomass$carbon + rnorm(nrow(biomass))

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

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

corr_filter <- rec %>%
  step_corr(all_numeric_predictors(), threshold = .5)

filter_obj <- prep(corr_filter, training = biomass_tr)

filtered_te <- bake(filter_obj, biomass_te)
round(abs(cor(biomass_tr[, c(3:7, 9)])), 2)
#>           carbon hydrogen oxygen nitrogen sulfur duplicate
#> carbon      1.00     0.32   0.63     0.15   0.09      1.00
#> hydrogen    0.32     1.00   0.54     0.07   0.19      0.31
#> oxygen      0.63     0.54   1.00     0.18   0.31      0.63
#> nitrogen    0.15     0.07   0.18     1.00   0.27      0.15
#> sulfur      0.09     0.19   0.31     0.27   1.00      0.10
#> duplicate   1.00     0.31   0.63     0.15   0.10      1.00
round(abs(cor(filtered_te)), 2)
#>           hydrogen nitrogen sulfur duplicate  HHV
#> hydrogen      1.00     0.11   0.26      0.20 0.10
#> nitrogen      0.11     1.00   0.16      0.13 0.11
#> sulfur        0.26     0.16   1.00      0.13 0.08
#> duplicate     0.20     0.13   0.13      1.00 0.94
#> HHV           0.10     0.11   0.08      0.94 1.00

tidy(corr_filter, number = 1)
#> # A tibble: 1 × 2
#>   terms                    id        
#>   <chr>                    <chr>     
#> 1 all_numeric_predictors() corr_ubc7G
tidy(filter_obj, number = 1)
#> # A tibble: 2 × 2
#>   terms  id        
#>   <chr>  <chr>     
#> 1 oxygen corr_ubc7G
#> 2 carbon corr_ubc7G
源代码:R/corr.R

相关用法


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