无法使用手电筒包装和R中的虹膜数据来计算交互作用?

问题描述

因此,我试图将flashlight包用于虹膜数据。 flashlight提供的功能之一是计算称为light_interaction的变量之间的交互。如果我使用light_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,pairwise = TRUE) # this line creates an error

这会抛出一条错误消息:

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

解决方法

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 package(v0.3.0)于2020-11-12创建

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...