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

通过caret调用rpart时因子预测变量被转换为数值的原因是什么

caret调用rpart与直接调用rpart的规则显示差异原因

这个差异由caret的默认数据预处理逻辑导致:

  • caret::train() 函数默认会对输入的因子类自变量执行*哑变量(独热编码)*转换:示例中的因子变量x只有A、B两个水平,转换后会生成名为xB的数值型变量,取值为1对应原x为B、取值为0对应原x为A。后续rpart基于转换后的数值变量训练,拆分规则自然显示为xB>=0.5、xB<0.5的形式。
  • 直接调用rpart::rpart()时,rpart原生支持因子类型的自变量做节点拆分,不会自动执行哑变量转换,因此会直接基于原始因子的水平生成x=B、x=A的规则。

如果需要caret调用rpart时也保留因子格式的拆分规则,可以关闭caret的自动哑变量转换逻辑,示例如下:

dummyModel <- caret::train(y ~ x, data = dummy, method = "rpart", metric = "ROC",
    trControl = dummyTc, tuneLength = 5,
    preProcess = NULL,
    xlev = list(x = levels(dummy$x))
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:06:06