首页 > 解决方案 > mlr3 中的 randomForest 在计算特征重要性分数时抛出错误

问题描述

我正在使用 mlr3 进行回归学习。使用 randomForest 进行回归时,模型运行良好,但是当我访问“importance()”时,出现以下错误:

    Error in switch(pars[["importance"]], mse = imp[["%IncMSE"]], nodepurity = imp[["IncNodePurity"]],  : 
      EXPR must be a length 1 vector

当我在浏览器模式下停止代码时,我确实看到“imp”具有所有功能重要性,如下面的屏幕截图所示:

在此处输入图像描述

在看到帮助页面后,我还注意到我需要将参数“重要性”设置为“mse”或“nodepurity”,但它会引发错误:未使用的参数(重要性 =“mse”)

有人可以帮帮我吗?

标签: rrandom-forestmlr3

解决方案


正如 pat-s 所说,我们无法在没有代表的情况下指出您的代码中的错误。但是,这很有效,可能会对您有所帮助。

library(mlr3)
library(mlr3extralearners)

task = tsk("boston_housing")
task$select(c("age", "b", "cmedv")) 

learner = lrn("regr.randomForest", importance = "mse")
learner$train(task)
learner$importance()

#>     cmedv         b       age 
#> 123.64922   8.72982   6.64579 

请参阅https://mlr3book.mlr-org.com/fs.html中的第 3.5.3 节“变量重要性过滤器” 。


推荐阅读