使用“mlr3pipelines”预处理数据后,“mlr3filters”的变量重要性在“mlr3proba”中不起作用

6 machine-learning mlr3 data-preprocessing

使用 R的mlr3proba和包运行下面的代码以在预处理数据集上实现算法并执行“可变重要性”,显示错误:mlr3pipelinesmlr3filtersrpart

task <- tsk("iris")

learner <- lrn("classif.rpart")

learner <- po("encode") %>>% po("scale") %>>% po("learner", learner)      # preprocessing

learner <- GraphLearner$new(learner)  #applying learner on a graph in mlr3pipelines

filter <- flt("importance", learner = learner)    #using filter for variable importance

filter$calculate(task)
Run Code Online (Sandbox Code Playgroud)
#Error: 

Error in learner$importance() : attempt to apply non-function 
Run Code Online (Sandbox Code Playgroud)

但是当我运行上面的代码时,无需预处理,它就可以工作:

task <- tsk("iris")

learner <- lrn("classif.rpart")

filter <- flt("importance", learner = learner)

filter$calculate(task)

as.data.table(filter)
Run Code Online (Sandbox Code Playgroud)
#Results:

        feature     score
1:  Petal.Width  88.96940
2: Petal.Length  81.34496
3: Setal.Length  54.09606
4:  Sepal.Width  36.01309
Run Code Online (Sandbox Code Playgroud)

那么,到底出了什么问题呢?