Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mlr3 cdf:下标超出范围_R_Xgboost_Mlr3 - Fatal编程技术网

mlr3 cdf:下标超出范围

mlr3 cdf:下标超出范围,r,xgboost,mlr3,R,Xgboost,Mlr3,使用的R版本:3.6.3、mlr3版本:0.4.0-9000、mlr3proba版本:0.1.6.9000、mlr3管道版本:0.1.2和xgboost版本:0.90.0.2(如Rstudio软件包管理器上所述) 我已经部署了以下图形管道: imputePipe = PipeOpImputeMean$new(id = "imputemean", param_vals = list()) survXGPipe = mlr_pipeops$get("learner&qu

使用的R版本:3.6.3、mlr3版本:0.4.0-9000、mlr3proba版本:0.1.6.9000、mlr3管道版本:0.1.2和xgboost版本:0.90.0.2(如Rstudio软件包管理器上所述)

我已经部署了以下图形管道:

imputePipe = PipeOpImputeMean$new(id = "imputemean", param_vals = list())
survXGPipe = mlr_pipeops$get("learner",lrn("surv.xgboost"))

graphXG= Graph$new()$
  add_pipeop(imputePipe)$
  add_pipeop(po("learner", lrn("surv.kaplan")))$
  add_pipeop(survXGPipe)$
  add_pipeop(po("distrcompose"))$
  add_edge("imputemean","surv.kaplan")$
  add_edge("imputemean","surv.xgboost")$
  add_edge("surv.kaplan","distrcompose", dst_channel = "base")$
  add_edge("surv.xgboost","distrcompose", dst_channel = "pred")
不幸的是,在执行以下命令时:

lrnXG = GraphLearner$new(graphXG)
trainResults = glrnXG$train(trainVerTask, row_ids = trainDataInd)
predictionResults = glrnXG$predict(trainVerTask, row_ids = verDataInd)
调用predict函数时,返回以下错误:

Error in cdf[i, ] : subscript out of bounds
这个错误似乎是DistricCompose函数特有的,因为我尝试只使用surv.xgboost、surv.kaplan实现简单的图形,但它没有显示出来

由于我尝试更改输入数据,而且只要使用DistrictCompose,就会返回相同的错误,因此它似乎也是指定的数据。请让我知道,如果你想让我提供任何关于此事的进一步信息,提前感谢你的时间

请使用以下代码再现错误:

library(mlr3)
library(mlr3pipelines)
library(mlr3proba)
library(mlr3learners)
task = tgen("simsurv")$generate(1000)
imputePipe = PipeOpImputeMean$new(id = "imputemean", param_vals = list())
survXGPipe = mlr_pipeops$get("learner",lrn("surv.xgboost"))

graphXG= Graph$new()$
  add_pipeop(imputePipe)$
  add_pipeop(po("learner", lrn("surv.kaplan")))$
  add_pipeop(survXGPipe)$
  add_pipeop(po("distrcompose"))$
  add_edge("imputemean","surv.kaplan")$
  add_edge("imputemean","surv.xgboost")$
  add_edge("surv.kaplan","distrcompose", dst_channel = "base")$
  add_edge("surv.xgboost","distrcompose", dst_channel = "pred")

lrnXG = GraphLearner$new(graphXG)
trainResults = lrnXG$train(task, row_ids = 1:900)
lrnXG$predict(task, row_ids = 901:1000)

问题出在这里的Distric6中,请从CRAN安装Distric6(1.4.2)和mlr3proba(0.2.0)的最新版本,然后重试。

非常感谢您的回复,我删除了以前的mlr3proba和Distric6软件包,并从以下位置安装了最新版本的mlr3proba:使用文件:mlr3proba_0.2.0.tar.gz。随着安装的完成,我有Disr(1.4.2)和mlr3proba(0.2.0),不幸的是,越界错误仍然存在。请提供一个包含任务的reprex,以便我可以尝试复制它。我已经用模拟任务运行了您的代码,没有问题,因此肯定需要您这边的reprex,最好使用sessioninfo
reprex::reprex
。如果这是一个真正的bug,那么我可能会在GitHub中打开它。亲爱的Raphael,非常感谢您的回复,我将尝试创建一个reprex,尽管我可能需要一段时间来创建一个示例,因为不幸的是,我在R中是非常新的。但是,就您用于任务的模拟数据而言,一个不小,是否有可能尝试使用以下数据维度复制图表:50个变量的1000个样本,80/20%的培训/验证分割。我注意到,当验证样本达到与训练类似的数量级时,错误消失,但这会导致不切实际的训练/验证%亲爱的Raphael,非常感谢您修复了该错误,我可以确认它现在可以工作了。