标签: tidymodels

R包“食谱”中的prep/bake/juice有什么区别?

我读了介绍tidymodels,我感到困惑的是什么prep(), bake(),并juice()从食谱包做数据。各自做什么?老实说,我发现为函数命名这样的名称令人困惑,对于烹饪类比中的每个函数,有什么更直观的名称?

r tidyverse r-recipes tidymodels

17
推荐指数
1
解决办法
1771
查看次数

为 tidymodel 对象创建 SHAP 图

这个问题指的是在 R 中使用 tidymodels 获取 catboost 模型的摘要形状图。鉴于问题下方的评论,OP 找到了解决方案,但到目前为止尚未与社区分享。

我想分析我的带有tidymodelsSHAP 值图的软件包的树整体,例如单个观测值的图,例如

ttps://prnt.sc/CO_PC4aDUQA0

并总结我的数据集所有特征的影响,例如

在此输入图像描述

DALEXtra 提供为 tidymodels 创建 SHAP 值的函数explain.tidymodels()force_plotfastshap包为底层 python 包的绘图函数提供了一个包装器SHAP。但我无法理解如何使该函数与函数的输出一起工作explain.tidymodels()

问题:如何在 R 中使用tidymodels和生成这样的 SHAP 图explain.tidymodels

MWE(对于带有 的 SHAP 值explain.tidymodels

library(MASS)
library(tidyverse)
library(tidymodels)
library(parsnip)
library(treesnip)
library(catboost)
library(fastshap)
library(DALEXtra)
set.seed(1337)
rec <-  recipe(crim ~ ., data = Boston)

split <- initial_split(Boston)

train_data <- training(split)

test_data <- testing(split) %>% dplyr::select(-crim) %>% as.matrix()

model_default<-
  parsnip::boost_tree( …
Run Code Online (Sandbox Code Playgroud)

plot tidymodels shap dalex

9
推荐指数
1
解决办法
2083
查看次数

用扫帚按组从回归中检索整洁的结果

这个问题的答案清楚地解释了在通过 dplyr 管道运行回归时如何按组检索整洁的回归结果,但该解决方案不再可重现。

如何组合使用 dplyr 和 broom 来按组运行回归并使用 R 4.02、dplyr 1.0.0 和 broom 0.7.0 检索整洁的结果?

具体来说,上面链接的问题的示例答案,

library(dplyr)
library(broom)

df.h = data.frame( 
  hour     = factor(rep(1:24, each = 21)),
  price    = runif(504, min = -10, max = 125),
  wind     = runif(504, min = 0, max = 2500),
  temp     = runif(504, min = - 10, max = 25)  
)

dfHour = df.h %>% group_by(hour) %>%
  do(fitHour = lm(price ~ wind + temp, data = .))

# get the coefficients by group in …
Run Code Online (Sandbox Code Playgroud)

r dplyr broom tidymodels

8
推荐指数
2
解决办法
1153
查看次数

R Tidymodels:利用预处理安装基于配方的工作流程后,要保存哪些对象以供生产使用?

在设计了基于Tidymodels配方的工作流程(经过调整然后适合一些训练数据)后,我不清楚应该将哪些对象(适合的“工作流程”、“配方”等)保存到磁盘以用于预测新的生产中的数据。我知道我可以使用saveRDS()/ readRDS()write_rds()/read_rds()或其他选项来实际保存/加载这些对象,但是哪些

在干净的 R 环境中,我将收到新的原始数据,这些数据需要使用我在训练模型时使用的“配方”进行预处理。然后我想在预处理后根据该数据进行预测。如果我打算像处理训练数据一样使用prep()bake()函数来预处理新数据,那么我将至少需要配方和原始训练数据,它似乎可以发挥prep()作用。另外,我还需要拟合模型/工作流程来进行预测。看起来是三个物体。如果我将 SESSION 1 中的工作流对象保存到磁盘,那么我可以分别使用pull_workflow_prepped_recipe()和来从 SESSION 2 中提取配方和模型pull_workflow_fit()。但prep()似乎需要原始训练数据,我可以将其保留在工作流程中,并提前使用retain = TRUE...,但在调用 后,它会从工作流程中删除fit()。听到我的呼救声吧!:)

因此,想象两个不同的 R 会话,第一个会话是我进行所有训练和模型构建,第二个会话是一些正在运行的生产应用程序,它使用从第一个会话中学到的知识。我需要 SESSION1 底部箭头以及 SESSION 2 中多个位置的帮助。我使用 Tidymodels入门作为此示例的基础。

第一节

library(tidymodels)
library(nycflights13)
library(readr)
set.seed(123)
flight_data <- 
  head(flights, 500) %>% 
  mutate(
    arr_delay = ifelse(arr_delay >= 30, "late", "on_time"),
    arr_delay = factor(arr_delay),
    date = as.Date(time_hour)
  ) %>% …
Run Code Online (Sandbox Code Playgroud)

r r-recipes tidymodels

8
推荐指数
1
解决办法
2289
查看次数

tidymodels 工作流程的文件大小

我正在尝试将 tidymodels 采用到我的流程中,但我在保存工作流程方面遇到了挑战。工作流对象的文件大小比用于构建模型的数据大很多倍,因此在尝试将工作流应用于新数据时,我最终耗尽了内存。我无法判断这是否是正确的结果或者我是否遗漏了某些内容。

为了对新数据进行预测,我们是否只需要配方步骤、模型系数以及可能来自训练集的一些汇总数据(例如用于缩放目的的训练数据的标准差和平均值)?那么为什么工作流对象这么大呢?

这是使用数据集的简单示例iris。我尝试按照Julia 的示例进行操作,但工作流程最终仍然比数据本身大 24 倍。我知道 tidymodels 发展很快,所以也许现在有更好的方法?任何建议表示赞赏!

library(tidyverse)
library(tidymodels)
library(lobstr)
library(butcher)

set.seed(8675309)

#Create an indicator for whether the species is Setosa
df <- iris %>% 
    mutate(is_setosa = factor(Species == "setosa"))

#Split into train/test
df_split <- initial_split(df, prop = 0.80)
df_train <- training(df_split)
df_test <- testing(df_split)

#Create the workflow object
my_workflow <- workflow() %>% 
    #use a logistic regression model using glm
    add_model({
        logistic_reg() %>% 
            set_engine("glm")
    }) %>% 
    #Add the recipe
    add_recipe({
        recipe(is_setosa ~ Sepal.Length …
Run Code Online (Sandbox Code Playgroud)

r tidymodels

7
推荐指数
1
解决办法
262
查看次数

tidymodels: ranger with cross validation

The dataset can be found here: https://www.kaggle.com/mlg-ulb/creditcardfraud

I am trying to use tidymodels to run ranger with 5 fold cross validation on this dataset.

I have have 2 code blocks. The first code block is the original code with the full data. The second code block is almost identical to the first code block, except I have subset a portion of the data so the code runs faster. The second block of code is just to make sure my code …

r tidymodels

6
推荐指数
1
解决办法
1132
查看次数

Tidymodels tune_grid:不使用公式时“不能对不存在的列进行子集化”

我为 TidyTuesday 上的最新咖啡数据集整理了一个数据预处理方法。我的目的是生成一个工作流,然后从那里调整一个超参数。我对通过各种update_role()函数手动声明预测变量和结果特别感兴趣,而不是使用公式,因为我对这种类型的变量选择有一些很好的计划(这是一个非常好的主意!)。

下面的示例生成了一个与prep和一起工作的配方bake(coffee_test)。如果我取消选择结果列,它甚至可以工作,例如。coffee_recipe %>% bake(select(coffee_test, -cupper_points)). 但是,当我运行工作流程时tune_grid,出现如图所示的错误。看起来tune_grid找不到没有“预测者”角色的变量,即使bake做得很好。

现在,如果我改为使用公式和step_rm我不关心的变量以正常方式做事,那么事情大多会奏效——我会收到一些缺少country_of_origin值的行的警告,我觉得这很奇怪,因为我应该进行估算那些。我完全有可能误解了角色的目的以及如何使用它们。

library(tidyverse)
library(tidymodels)
#> ?? Attaching packages ????????????????????????????????????????????????????? tidymodels 0.1.1 ??
#> ? broom     0.7.0      ? recipes   0.1.13
#> ? dials     0.0.8      ? rsample   0.0.7 
#> ? infer     0.5.3      ? tune      0.1.1 
#> ? modeldata 0.0.2      ? workflows 0.1.2 
#> ? parsnip   0.1.2      ? yardstick 0.0.7
#> ?? Conflicts ???????????????????????????????????????????????????????? tidymodels_conflicts() ??
#> x …
Run Code Online (Sandbox Code Playgroud)

r r-recipes tidymodels

6
推荐指数
1
解决办法
1396
查看次数

tidymodels 列中发现的新颖级别

我正在用来tidymodels创建随机福雷斯特预测。我的测试数据包含训练数据中不存在的新因子级别,这会导致错误:

1: Novel levels found in column 'Siblings': '4'. The levels have been removed, and values have been coerced to 'NA'. 
2: There are new levels in a factor: NA 
> test_predict
Fehler: Objekt 'test_predict' nicht gefunden
Run Code Online (Sandbox Code Playgroud)

我尝试在“兄弟姐妹”列中包含“step_novel和” step_dummy,但这并不能解决错误。我应该如何处理训练数据中不存在的新因素?

library(tidyverse)
library(tidymodels)

data <-
  data.frame(
    Survived = as.factor(c(0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0)),
    Siblings = as.factor(c(1,1,0,1,0,0,0,3,1,1,0,1,0,0,0,3)),
    Class = as.factor(c(0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0)),
    Embarked = as.factor(c("s","c","m","m","s","c","s","m","m","s","s","s","s","s","s","s")) 
  )

test <-
  data.frame(
    Siblings = as.factor(c(1,1,0,1,0,0,0,3,1,1,0,1,0,0,0,4)), #New factor level
    Class = as.factor(c(0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0)),
    Embarked = as.factor(c("s","c","m","m","s","c","s","m","m","s","s","s","s","s","s","s")) 
  )

#Model
rf_model …
Run Code Online (Sandbox Code Playgroud)

r tidymodels

6
推荐指数
1
解决办法
1005
查看次数

使用 tidymodels 调整工作流程集时如何正确设置参数网格?

我尝试使用 tidymodels 通过配方和模型参数来调整工作流程。调整单个工作流程时没有问题。但是,当调整具有多个工作流程的工作流程集时,它总是会失败。这是我的代码:

\n
# read the training data\ntrain <- read_csv("../../train.csv")\ntrain <- train %>% \n    mutate(\n      id = row_number(),\n      across(where(is.double), as.integer),\n      across(where(is.character), as.factor),\n      r_yn = fct_relevel(r_yn, "yes")) %>% \n  select(id, r_yn, everything())\n\n# setting the recipes\n\n# no precess\nrec_no <- recipe(r_yn ~ ., data = train) %>%\n  update_role(id, new_role = "ID")\n\n# downsample: tuning the under_ratio\nrec_ds_tune <- rec_no %>% \n  step_downsample(r_yn, under_ratio = tune(), skip = TRUE, seed = 100) %>%\n  step_nzv(all_predictors(), freq_cut = 100)\n\n# setting the models\n\n# randomforest\nspec_rf_tune <- rand_forest(trees = 100, …
Run Code Online (Sandbox Code Playgroud)

workflow r machine-learning r-recipes tidymodels

6
推荐指数
1
解决办法
1306
查看次数

如何在 R 中的列范围之间应用 t 检验

我有一个如下所示的大型数据集。我想知道是否有一种聪明的方法可以在每一行(又名基因)中应用 t 检验,并比较人类和小鼠之间的计数。

我想在每一行 ( human_A, human_B, human_C) 与 (mouse_A, mouse_B) 进行比赛

human_A = rnorm(20, 10, 1)
human_B <- rnorm(20, 10, 2)
human_C <- rnorm(20, 20, 3)

mouse_A = rnorm(20, 5, 1)
mouse_B <- rnorm(20, 10, 2)

genes <- paste0("gene_",rep(1:20))

df <- data.frame(genes,human_A,human_B,human_C,mouse_A,mouse_B)
head(df)
#>    genes   human_A   human_B  human_C  mouse_A   mouse_B
#> 1 gene_1  8.482934 10.396456 21.88825 6.070031  6.136563
#> 2 gene_2  9.836256 13.170547 23.04314 4.247680 11.781652
#> 3 gene_3  9.280803 11.184282 19.64985 6.010297  6.430591
#> 4 gene_4  9.069052  8.884374 …
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyr tidyverse tidymodels

6
推荐指数
2
解决办法
147
查看次数

标签 统计

tidymodels ×10

r ×9

r-recipes ×4

dplyr ×2

tidyverse ×2

broom ×1

dalex ×1

machine-learning ×1

plot ×1

shap ×1

tidyr ×1

workflow ×1