【问题标题】:How can I discretize the numeric variables without losing the original ones?如何在不丢失原始变量的情况下离散数值变量?
【发布时间】:2020-08-20 17:24:03
【问题描述】:

这是我的玩具数据和代码。如何在不丢失原始变量的情况下离散化数值变量?

library(gapminder); library(tidyverse); library(tidymodels)

gapminder %>% 
  recipe(lifeExp ~ .) %>% 
  step_discretize(all_numeric(), -all_outcomes(), options = list(cuts = 10)) %>% 
  prep() %>% 
  juice()

在上面的代码中,我丢失了 pop 和 gdpPercap 的原始值,因为它们被各自的离散化版本替换。如何同时保留原始数值和离散变量?

其次,除了 bin01、bin02,难道没有办法获得 [0-100]、[101-150] 等类型的 bin,所以我知道哪个 bin 有什么值?

【问题讨论】:

  • 这个配方步骤不像step_dummy()那样有preserve参数。如果您想 open an issue 解释为什么要在建模工作流程中保留原始版本和离散化版本,我们可以查看它并优先考虑这个想法以进行开发。

标签: r tidymodels r-recipes


【解决方案1】:

不确定如何使用 step_discretize 和 left_joining 数据再次执行此操作,但 arules 包中有一个 discretize 函数可以渲染带有值的 bin。这对我有用。

gapminder %>% 
  mutate(across(where(is.numeric),  
      ~arules::discretize(x = .x, method = "interval", breaks = 10), 
         .names = "bin_{col}"))

如果您知道如何在食谱中执行此操作,请告诉我。

【讨论】:

  • Arules 的离散化功能在我看来是最好的。有人告诉我们如何将其纳入食谱中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-29
  • 2011-04-18
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
  • 1970-01-01
  • 2013-04-10
相关资源
最近更新 更多