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

如何统计partykit::cforest中各特征的节点拆分使用次数?

统计partykit::cforest模型中特征节点拆分次数的简便方法

要统计partykit::cforest模型里各特征用于节点拆分的次数,直接提取森林中每棵树的拆分变量并汇总即可,步骤如下:

1. 拟合cforest模型(示例)

library(partykit)
data(iris)
# 拟合分类随机森林
cf <- cforest(Species ~ ., data = iris, control = cforest_unbiased(mtry = 2))

2. 提取并统计拆分次数

# 遍历每棵树,提取所有非终端节点的拆分变量名
split_vars <- lapply(cf$ensemble, function(tree) {
  # 获取非终端节点的变量索引
  var_ids <- tree$node[!tree$node$terminal, "split"]$varid
  # 映射为原始数据的变量名
  names(iris)[var_ids]
})

# 合并所有拆分变量并统计次数
split_counts <- table(unlist(split_vars))
# 输出结果
split_counts

3. 可选:统计相对拆分比例

如果需要查看各特征拆分次数的占比,可使用prop.table()转换:

prop.table(split_counts)

关键说明

  • cf$ensemble存储了cforest中的所有决策树,每个元素是一个party对象
  • 筛选!tree$node$terminal是为了只统计用于拆分的非终端节点,排除叶子节点
  • 这个方法统计的是实际被用于节点拆分的次数,和基于置换的变量重要性(varimp(cf))逻辑不同

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 10:03:23