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

如何在partykit条件推断树中查看内部节点的输出概率?

获取partykit包ctree内部节点的精确概率

要拿到ctree中内部节点(如节点2、5)的精确分类概率,不用依赖绘图估算,直接通过节点数据统计即可,具体步骤如下:

  • 用nodeapply函数遍历树的所有节点(包含内部和终端节点),获取每个节点对应的观测数据集
  • 对每个节点的数据集统计各类别的频数,再转换为概率
  • 将结果整理成结构化格式,方便查看

代码示例

假设你已经训练好分类树模型i.ctree,响应变量为分类变量y:

library(partykit)

# 获取所有节点的对象列表
all_nodes <- nodeapply(i.ctree, ids = nodeids(i.ctree))

# 计算每个节点的类别概率
node_probabilities <- lapply(all_nodes, function(node) {
  # 提取当前节点包含的所有观测
  node_obs <- node$data
  # 统计类别频数并计算概率
  category_counts <- table(node_obs$y)
  prop.table(category_counts)
})

# 整理成数据框,清晰展示节点ID、类别和对应概率
prob_df <- do.call(rbind, lapply(names(node_probabilities), function(node_id) {
  prob_vec <- node_probabilities[[node_id]]
  data.frame(
    节点ID = node_id,
    类别 = names(prob_vec),
    概率 = as.numeric(prob_vec)
  )
}))

# 查看结果,包含所有内部节点的精确概率
print(prob_df)

补充说明

  • 无论二分类还是多分类任务,这段代码都能适用,会自动统计每个节点内所有类别的概率
  • 这种方法直接基于节点包含的原始观测数据计算,比绘图估算的结果更精确
  • 如果需要单独查看某个节点(如节点5)的概率,可直接调用node_probabilities[["5"]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:45:34