使用Tidymodels的C5_rules()拟合分类模型报错如何解决?
你目前仅完成了C5.0规则模型的规格定义,还未将模型规格与训练数据绑定完成拟合,底层C5.0对象没有生成实际的分类规则,所以预测时会抛出缺失规则/树的错误。
必要补充步骤
1. 确认依赖包加载
C5_rules() 属于rules扩展包,拟合前需确保已加载:
library(rules) library(tidymodels)
2. 完成模型拟合
有两种常用的拟合方式:
方式一:直接用fit()对接公式和训练数据
适合无复杂预处理的场景,直接将模型规格与公式、训练数据绑定拟合:
# 替换为你的训练数据集、目标变量名和特征公式 c5_fit <- c5_spec %>% fit(目标变量名 ~ ., data = 训练数据集)
方式二:通过workflow绑定后拟合(更推荐)
适合搭配复杂预处理、重抽样评估的场景,也是tidymodels的标准实践:
library(workflows) # 构建工作流,绑定预处理(这里用公式为例,也可绑定recipe)和模型 c5_wf <- workflow() %>% add_formula(目标变量名 ~ .) %>% add_model(c5_spec) # 传入训练数据完成拟合 c5_fit <- c5_wf %>% fit(data = 训练数据集)
3. 验证拟合结果
拟合完成后可直接调用predict()做预测,不会再触发报错:
# 替换为你的测试数据集 predict(c5_fit, new_data = 测试数据集)
常见踩坑提示
你报错信息中出现preprocessor 1/1, model 1/1说明你可能在使用fit_resamples()做重抽样评估,这时候需注意:
- 传入
fit_resamples()的必须是同时绑定了预处理和模型的workflow,不能直接传入未绑定预处理的模型规格 - 如果同时在做超参数调优,需要先在
C5_rules()中为待调参数设置tune()占位符,改用tune_grid()执行调优流程,不能直接用fit_resamples()
内容的提问来源于stack exchange,提问作者cyn
相关产品推荐
相关产品推荐

