1

我正在尝试学习 R 的建模框架 tidymodels。创建模型并指定要用于模型的包(引擎)后,我现在尝试使用我选择的引擎内部的一些特定功能。在这种情况下,我尝试使用的是 randomForest 包和 varImpPlot() 函数。但是,当我尝试执行它时会出现此错误,它说为了使用该函数,该对象必须是一个 randomForest 对象。嗯,这很明显,但我的问题是,有没有办法将欧洲防风草对象转换为我选择的引擎对象,或者有什么方法可以在我选择的包中使用这些函数?感谢帮助!

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'
4

1 回答 1

0

您可以使用从中提取randomForest对象。在您的示例中,这应该有效workflow$fit$fit$fit

training_workflow_fit$fit$fit$fit %>% varImpPlot()

或者你可以使用下面的语法,这可能更简洁

training_workflow_fit %>% 
  chuck("fit") %>% 
  chuck("fit") %>% 
  chuck("fit") %>% 
  varImpPlot()
于 2020-12-30T19:35:47.827 回答