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

问题描述

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

解决方法

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

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

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

training_workflow_fit %>% 
  chuck("fit") %>% 
  chuck("fit") %>% 
  chuck("fit") %>% 
  varImpPlot()

相关问答

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