0

学习如何将 drake 与 tidymodels 一起使用。

当我运行 make(plan) 时,关于使用 rsample 的 initial_time_split() 而不仅仅是 initial_split() 的一些事情给了我一个错误。我得到以下信息:

#> > target data
#> > target split_data
#> Error in UseMethod("complement"): no applicable method for 'complement' applied to an object of class "rsplit"

真的一直在为此绞尽脑汁。该功能可以正常工作,独立(即以下工作): 在此处输入图像描述

我觉得我错过了一些非常基本的东西。

这是单个文件中的完整 drake 进程(以便更容易在堆栈溢出时发布)。

提前感谢您的提示,关于我做错了什么。

library(drake)
library(tidyverse)
library(tidymodels)

###################################################################

generate_data <- function() {
  tibble(x = rnorm(1e5), y = rnorm(1e5))
}


split_the_data <- function(data) {
  
  data %>% 
    initial_time_split()
  
}


fit_model <- function(data) {
  
  summary(lm(y ~ x, data = data))
}



###################################################################


plan <- drake_plan(
  
  data = generate_data(),
  
  split_data = split_the_data(data),
  
  model = fit_model(training(split_data))
  
)


###################################################################


make(plan)
4

1 回答 1

1

这现在应该在当前的开发版本中得到修复(从93d60ef41119defc0432cc95d2dd6787e4a00b14 开始)。你可以安装它

install.packages("remotes")
remotes::install_github("ropensci/drake")

发生错误是因为drake调用NROW()了每个目标(出于动态分支目的)并且显然是对象NROW()上的错误。rsplit

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 scales::discard() masks purrr::discard()
#> x dplyr::filter()   masks stats::filter()
#> x recipes::fixed()  masks stringr::fixed()
#> x dplyr::lag()      masks stats::lag()
#> x yardstick::spec() masks readr::spec()
#> x recipes::step()   masks stats::step()

generate_data <- function() {
    tibble(x = rnorm(1e5), y = rnorm(1e5))
}

split_the_data <- function(data) {
    data %>% 
        initial_time_split()
}

NROW(split_the_data(generate_data()))
#> Error in UseMethod("complement"): no applicable method for 'complement' applied to an object of class "rsplit"

reprex 包(v0.3.0)于 2020-07-23 创建

在https://github.com/ropensci/drake/issues/1300中跟踪的问题。

于 2020-07-23T13:33:22.653 回答