mlr3pipelines icon indicating copy to clipboard operation
mlr3pipelines copied to clipboard

PipeOpFeatureUnion breaks predict_newdata when all features of original task aver overwritten

Open mb706 opened this issue 1 year ago • 0 comments

Another POFU issue...

apparently DataBackendRename$missings breaks when queried for no columns. This happens because cbind() overwrites all columns in this case.

> gr <- list(po("select", selector = selector_none()), po("nop")) %>>!% po("featureunion", innum = c("a", "")) %>>!%
+   { l <- lrn("classif.rpart") ; l$properties <- setdiff(l$properties, "missings") ; l }
> gr$train(tsk("iris"))
$classif.rpart.output
NULL

> gr$predict(tsk("iris"))
$classif.rpart.output
<PredictionClassif> for 150 observations:
    row_ids     truth  response
          1    setosa    setosa
          2    setosa    setosa
          3    setosa    setosa
---                            
        148 virginica virginica
        149 virginica virginica
        150 virginica virginica

> lr <- as_learner(gr)
> lr$train(tsk("iris"))
> lr$predict_newdata(iris[1:4])
Error in map_values(names(x), self$old, self$new) : 
  Assertion on 'x' failed: Must be of type 'atomic vector', not 'NULL'.
This happened PipeOp classif.rpart's $predict()

mb706 avatar Sep 24 '22 00:09 mb706