0

所以我试图将flashlight包与虹膜数据一起使用。提供的功能之一flashlight是计算称为 的变量之间的相互作用light_interactionlight_interaction如果我使用lm模型,我可以开始工作,但如果我使用[mlr3旁注:如果我使用创建回归模型mlr3,它与手电筒交互功能完美配合......我只是可以'不能让它用于分类......我需要手电筒来使用 mlr3 来处理我的包裹]。在下面的代码中,我展示了一个使用lm模型的示例......以及一个不使用的示例mlr3......我做错了什么吗?

lm有效的模型示例:

library(flashlight)

fit <- lm(Sepal.Length ~ ., data = iris)
x <- flashlight(model = fit, label = " ", data = iris, y = "Species")
light_interaction(x, pairwise = TRUE, type = "H", grid_size = 5,
                         normalize = F)

mlr3不起作用的模型:

library(mlr3)
library(mlr3learners)
# mlr3 TASK
bc_T = TaskClassif$new(id = "dat", backend = iris, target = "Species")
# learner
lrn = lrn("classif.ranger")
# model
bc_M <- lrn$train(bc_T)

x <- flashlight(model = bc_M, label = " ", data = iris, y = "Species")
light_interaction(x, pairwise = TRUE) # this line creates an error

这会抛出一个错误说:

rowsum.default(xx * ww, gg) 中的错误:“x”必须是数字另外:警告消息:在 Ops.factor(xx,ww) 中:“*”对因子没有意义

4

1 回答 1

1

mlr3 使用 R6,拟合模型存储在$model插槽中。我不知道是什么flashlight::light_interaction(),但就您的错误而言,它很简单

library(mlr3)
library(mlr3learners)
library(flashlight)
bc_T <- TaskClassif$new(id = "dat", backend = iris, target = "Species")
lrn <- lrn("classif.ranger")
bc_M <- lrn$train(bc_T)

x <- flashlight(model = bc_M$model, label = " ", data = iris, y = "Species")
print(x)
#> 
#> Flashlight   
#> 
#> Model:            Yes
#> y:            Species
#> w:            No
#> by:           No
#> data dim:         150 5
#> predict_fct default:  TRUE
#> linkinv default:  TRUE
#> metrics:      rmse
#> SHAP:             No

reprex 包(v0.3.0)于 2020 年 11 月 12 日创建

于 2020-11-12T07:48:28.717 回答