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

使用R语言C5.0构建决策树无输出的问题排查

C5.0算法未生成预期决策树的排查与解决

问题背景

使用R语言的C50包构建决策树,数据集为14行3列的jogging数据,目标变量为CLASSIFICATION。执行代码后未生成预期的2节点决策树,无树结构输出。

数据集详情

WEATHER   JOGGED_YESTERDAY   CLASSIFICATION
C          N                  +
W          Y                  -
Y          Y                  -
C          Y                  -
Y          N                  -
W          Y                  -
C          N                  -
W          N                  +
C          Y                  -
W          Y                  +
W          N                  +
C          N                  +
Y          N                  -
W          Y                  -

dput结构:

structure(list(WEATHER = c("C", "W", "Y", "C", "Y", "W", "C", 
"W", "C", "W", "W", "C", "Y", "W"), JOGGED_YESTERDAY = c("N", 
"Y", "Y", "Y", "N", "Y", "N", "N", "Y", "Y", "N", "N", "N", "Y"
), CLASSIFICATION = c("+", "-", "-", "-", "-", "-", "-", "+", 
"-", "+", "+", "+", "-", "-")), class = "data.frame", row.names = c(NA, 
-14L))

执行代码

jogging <- read.csv("Jogging.csv")

jogging           #training data

library(C50)
jogging$CLASSIFICATION <- as.factor(jogging$CLASSIFICATION)
jogging_model <- C5.0(jogging[-3], jogging$CLASSIFICATION)       

jogging_model
summary(jogging_model)
plot(jogging_model)

问题原因

C5.0()函数默认会根据数据复杂度自动选择生成规则集还是决策树。当算法判定规则集比决策树更简洁时,会输出规则而非树结构,这就导致你看不到预期的决策树节点。

另外需确认数据读取是否正确:若你的Jogging.csv是用空格分隔而非逗号,read.csv()会错误合并列,导致模型输入异常。但从你提供的dput结构看,数据格式是正确的,所以核心原因是算法自动选择了规则集。

解决方法

强制C5.0()生成决策树,只需在函数中添加rules = FALSE参数:

library(C50)
# 确保目标变量是因子类型
jogging$CLASSIFICATION <- as.factor(jogging$CLASSIFICATION)
# 强制生成决策树
jogging_model <- C5.0(jogging[-3], jogging$CLASSIFICATION, rules = FALSE)

# 查看树结构
jogging_model
summary(jogging_model)
plot(jogging_model)

执行修改后的代码后,就能生成并查看决策树结构了。

内容的提问来源于stack exchange,提问作者kang yep sng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:45:39