【发布时间】:2020-06-16 23:21:39
【问题描述】:
我不确定我在这里做错了什么......但我正在尝试使用mlr 包创建的模型和vip 中的R 包。具体来说,我试图使用vip 包中的vint 函数来计算变量之间的双向交互强度。这基本上是我正在做的事情:
library(mlr)
library(vip)
library(randomForest)
# Get example data
airQ <- data.frame(airquality)
airQ <- na.omit(airQ)
# Set up mlr model
airQ_task <- makeRegrTask(data = airQ, target = "Ozone")
airQ_lrn <- makeLearner("regr.randomForest")
airQ_mod <- train(airQ_lrn, airQ_task)
# For comparison set up randomForest model
aqFit <- randomForest(Ozone~., data = airQ)
# Use vip to get variable interaction
vint(aqFit, feature_names = c("Solar.R", "Temp")) # rf model works
vint(airQ_mod, feature_names = c("Solar.R", "Temp")) # mlr model does not work
使用上面的代码,vint 函数适用于 randomForest 模型,但不适用于 mlr 模型。相反,对于 mlr 模型,它会抛出一个错误:
get_training_data.default(object) 中的错误:训练数据 无法从对象中提取。请提供原始培训 在对
partial的调用中使用train参数的数据。
我认为vip 包最近更新了,它们改变了一些功能的工作方式......但我不知道我在这里做错了什么。我也知道vip 包确实接受mlr 模型,因为如果我尝试使用vip 变量重要性函数,一切正常吗?例如,
vip(airQ_mod)
关于如何使vint 函数与mlr 一起工作的任何建议?
【问题讨论】: