You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中构建回归树调优网格时遇parameters函数报错求助

解决方法

1. 先理清模型类型(你要的是randomForest,不是单棵决策树)

你提到要尝试randomForest模型,但当前代码用的是decision_tree()(对应rpart单棵决策树),这是两种不同的模型。如果目标是随机森林,应该用rand_forest()函数,指定引擎为"randomForest",同时标记要调优的参数:

library(tidymodels)

# 构建随机森林的调优规格
tune_spec <- rand_forest(
  mtry = tune(),       # 每棵树随机选取的特征数
  trees = tune(),      # 森林中树的数量
  min_n = tune()       # 节点分裂所需的最小样本量
) %>% 
  set_engine("randomForest") %>% 
  set_mode("regression")

2. 正确生成调优网格(针对单棵决策树或随机森林)

不管是哪种模型,要使用grid_regular()生成调优网格,必须先在模型规格中标记出需要调优的参数(用tune()),否则parameters()无法识别可调整的参数,就会报错。

如果你确实想调rpart单棵决策树

修正你的原始代码,添加可调参数标记:

# 修正后的单棵决策树规格
tune_spec <- decision_tree(
  cost_complexity = tune(),  # 复杂度惩罚项,控制树的剪枝
  tree_depth = tune(),       # 树的最大深度
  min_n = tune()             # 节点最小样本量
) %>% 
  set_engine("rpart") %>% 
  set_mode("regression")

# 生成调优网格
tree_grid <- grid_regular(parameters(tune_spec), levels = 3)

更简便的写法

你也可以直接把模型规格传给grid_regular(),它会自动提取可调参数:

tree_grid <- grid_regular(tune_spec, levels = 3)

报错根源

你之前的decision_tree()没有设置任何tune()标记的参数,parameters()函数无法从一个没有可调参数的模型对象中生成参数集,因此抛出错误。另外注意区分单棵决策树(decision_tree()+rpart)和随机森林(rand_forest()+randomForest)的用法,避免模型类型混淆。

内容的提问来源于stack exchange,提问作者Lillian Welsh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 11:27:23