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

使用C5.0构建决策树报错‘models require a factor outcome’的原因及解决方法

C5.0决策树报错“models require a factor outcome”的原因及解决办法

数据集

Age   Job House    Credit Loan.Approved
1   Young FALSE    No      Fair            No
2   Young FALSE    No      Good            No
3   Young  TRUE    No      Good           Yes
4   Young  TRUE   Yes      Fair           Yes
5   Young FALSE    No      Fair            No
6  Middle FALSE    No      Fair            No
7  Middle FALSE    No      Good            No
8  Middle  TRUE   Yes      Good           Yes
9  Middle FALSE   Yes Excellent           Yes
10 Middle FALSE   Yes Excellent           Yes
11    Old FALSE   Yes Excellent           Yes
12    Old FALSE   Yes      Good           Yes
13    Old  TRUE    No      Good           Yes
14    Old  TRUE    No Excellent           Yes
15    Old FALSE    No      Fair            No

尝试的代码

LoanDFrame$Job <- as.factor(LoanDFrame$Job)
tr <- C5.0(Loan.Approved ~ Age + Job + House + Credit, data = LoanDFrame)

错误提示

models require a factor outcome


原因分析

C5.0是分类决策树算法,强制要求目标变量(即公式中的Loan.Approved)必须是因子(factor)类型。你仅将Job转换为因子,但Loan.Approved仍为字符型(character)或其他非因子类型,不符合模型对输入的要求,因此触发该错误。从数据集来看,Loan.Approved的取值是Yes/No,属于二分类标签,必须以因子类型传入模型才能让C5.0识别分类类别。

解决办法

  1. 转换目标变量为因子
    在构建模型前,先将Loan.Approved转为因子类型,代码如下:
# 转换目标变量为因子
LoanDFrame$Loan.Approved <- as.factor(LoanDFrame$Loan.Approved)
# 构建决策树模型
tr <- C5.0(Loan.Approved ~ Age + Job + House + Credit, data = LoanDFrame)
  1. 统一转换分类特征为因子
    除目标变量外,数据集中的Age、House、Credit也属于分类特征,建议一并转为因子类型,避免模型处理时出现异常:
# 批量转换分类特征
LoanDFrame$Age <- as.factor(LoanDFrame$Age)
LoanDFrame$House <- as.factor(LoanDFrame$House)
LoanDFrame$Credit <- as.factor(LoanDFrame$Credit)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:15:36