【问题标题】:Using package specific functions with parsnip将包特定功能与欧洲防风草一起使用
【发布时间】:2020-12-28 16:44:02
【问题描述】:

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

【问题讨论】:

    标签: r tidymodels r-parsnip


    【解决方案1】:

    您可以使用$fit$fit$fitworkflow 中提取randomForest 对象。在您的示例中,这应该可以工作

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

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-24
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 2016-10-31
    • 1970-01-01
    相关资源
    最近更新 更多