在欧洲防风草中使用特定于包的功能

时间:2020-12-28 16:44:02

标签: r tidymodels r-parsnip

我正在尝试学习 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'

1 个答案:

答案 0 :(得分:0)

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

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

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

training_workflow_fit %>% 
  chuck("fit") %>% 
  chuck("fit") %>% 
  chuck("fit") %>% 
  varImpPlot()
相关问题