我正在尝试学习R的建模框架tidymodels。在创建模型并指定要用于模型的包(引擎(之后,我现在尝试使用我选择的引擎内部的一些特定功能。在本例中,我尝试使用的是randomForest包和varImpPlot((函数。然而,当我试图执行它时,这个错误就会出现,它说为了使用函数,对象必须是randomForest对象。这是显而易见的,但我的问题是,有没有办法将parsnip对象转换为我选择的引擎的对象,或者有没有办法在我选择的包中使用这些功能?谢谢你的帮助!
model_rand_forest <- rand_forest() %>%
set_engine("randomForest") %>%
set_mode("regression") %>%
translate()
training_workflow <- workflow() %>%
add_recipe(recipe) %>%
add_model(model_rand_forest)
training_workflow_fit <- training_workflow %>% fit(data = train)
training_workflow_fit %>% varImpPlot()
training_workflow_fit %>% varImpPlot()
Error in varImpPlot(.) :
This function only works for objects of class `randomForest'
您可以使用$fit$fit$fit
从workflow
提取randomForest
对象。在您的示例中,这应该可以使用
training_workflow_fit$fit$fit$fit %>% varImpPlot()
或者你可以使用下面的语法,这可能是更整洁的
training_workflow_fit %>%
chuck("fit") %>%
chuck("fit") %>%
chuck("fit") %>%
varImpPlot()