首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mlr pipeops中的调试/检查步骤

mlr pipeops中的调试/检查步骤
EN

Stack Overflow用户
提问于 2021-03-17 22:50:16
回答 1查看 38关注 0票数 3

我想检查计算中的中间步骤,但我不知道如何做。

书中的例子:

代码语言:javascript
复制
mutate = mlr_pipeops$get("mutate")
filter = mlr_pipeops$get("filter",
  filter = mlr3filters::FilterVariance$new(),
  param_vals = list(filter.frac = 0.5))

graph = mutate %>>%
  filter %>>%
  mlr_pipeops$get("learner",
    learner = mlr_learners$get("classif.rpart"))

graph$keep_results=TRUE

task = mlr_tasks$get("iris")
graph$train(task)

现在,我想看看任务的转换后的数据矩阵(在mutatefilter之后)。这一定在graph中的某个地方,特别是因为我设置了keep_results=TRUE。但是我看不到在哪里。有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-17 23:51:25

设置keep_results=TRUE是正确的开始。当你设置它时,每个PipeOp的计算结果被存储在PipeOp$.result槽中。结果是一个列表,因为一个PipeOp可能有多个结果对象,但对于大多数预处理操作,它只有一个成员($output),并且只是一个可以检查的Task

代码语言:javascript
复制
# your code
graph$train(task)
#> $classif.rpart.output
#> NULL
#>

# E.g. the result of the "variance" filter:

graph$pipeops$variance$.result
#> $output
#> <TaskClassif:iris> (150 x 3)
#> * Target: Species
#> * Properties: multiclass
#> * Features (2):
#>   - dbl (2): Petal.Length, Sepal.Length

# $output is a Task, so the data can e.g. be seen with $data():

graph$pipeops$variance$.result$output$data()
#>        Species Petal.Length Sepal.Length
#>   1:    setosa          1.4          5.1
#>   2:    setosa          1.4          4.9
#>   3:    setosa          1.3          4.7
#>   4:    setosa          1.5          4.6
#>   5:    setosa          1.4          5.0
#>  ---                                    
#> 146: virginica          5.2          6.7
#> 147: virginica          5.0          6.3
#> 148: virginica          5.2          6.5
#> 149: virginica          5.4          6.2
#> 150: virginica          5.1          5.9
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66675495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档