【问题标题】:randomForest in mlr3 throws error while calculating feature importance scoresmlr3 中的 randomForest 在计算特征重要性分数时抛出错误
【发布时间】:2021-07-22 20:28:23
【问题描述】:

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

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

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

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

有人可以帮帮我吗?

【问题讨论】:

  • 请尽量避免发布截图并添加reproducible example,我们可以为您提供帮助。
  • 嗨,帕特,谢谢。这些数据是非公开的,我不确定我是否可以将它上传到某个地方让您重现系统的确切状态(更容易共享代码)。我希望您能够评论 pars[["importance"]] 正在被访问而 par 显然是空的这一事实。由于我不是靠自己控制这些变量,因此必须有特定于系统的原因。另外,您能否评论一下是否需要将名为“importance”的参数传递给同名的方法?
  • 我可以尝试的任何提示或事情都会对@pat-s有所帮助。请让我知道是否有办法让我分享更多信息以帮助您。我当然可以分享代码的sn-p。
  • 可重现的示例不需要您的数据 - 尝试使用示例任务之一复制问题(然后编辑问题)。您看到的错误似乎与您的数据无关。此外,您可能会发现 reprex 软件包很有帮助。
  • 如果在 mlr3 中没有记录(很好)的内容,我们很乐意向我们的 270 多页手册提出建议;)如果没有 reprex,则不确定切换框架是否对问题有帮助给出但证明一个实际问题。

标签: r random-forest mlr3


【解决方案1】:

正如 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 节“变量重要性过滤器”。

【讨论】:

    猜你喜欢
    • 2021-08-22
    • 1970-01-01
    • 2021-09-07
    • 2016-03-17
    • 2017-10-25
    • 1970-01-01
    • 2021-02-04
    • 2018-08-16
    • 2022-01-19
    相关资源
    最近更新 更多