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

sklearn回归决策树文本输出如何包含MSE及样本数?

解决回归决策树文本输出缺少MSE和样本数量的问题

tree.export_text()函数默认不会输出回归决策树的MSE和样本数量,且show_weights=True仅对分类树生效,对回归树无作用。你可以通过以下两种方式获取这些信息:

方法一:用plot_tree()可视化查看

plot_tree()默认会显示每个节点的样本数、MSE(回归树的不纯度指标)和预测值,代码示例:

from sklearn import tree
import matplotlib.pyplot as plt

plt.figure(figsize=(15, 10))
tree.plot_tree(
    regressor,
    feature_names=list(X.columns),
    filled=True,
    impurity=True,  # 显示MSE,默认开启
    proportion=False  # 显示绝对样本数,设为True则显示比例
)
plt.show()

方法二:自定义函数遍历树节点输出纯文本

如果需要纯文本格式的完整信息,可以直接访问回归树的内部属性,递归遍历节点并输出:

def print_reg_tree_details(regressor, feature_names):
    n_nodes = regressor.tree_.node_count
    children_left = regressor.tree_.children_left
    children_right = regressor.tree_.children_right
    feature_idx = regressor.tree_.feature
    thresholds = regressor.tree_.threshold
    mse_values = regressor.tree_.impurity  # 回归树的impurity就是MSE
    sample_counts = regressor.tree_.n_node_samples
    weighted_samples = regressor.tree_.weighted_n_node_samples

    def traverse(node, depth=0):
        indent = "    " * depth
        # 判断是否为叶子节点
        if children_left[node] == children_right[node]:
            pred_val = regressor.tree_.value[node][0][0]
            print(f"{indent}叶节点: 预测值={pred_val:.3f}, MSE={mse_values[node]:.3f}, 样本数={sample_counts[node]}, 加权样本数={weighted_samples[node]:.3f}")
        else:
            feat_name = feature_names[feature_idx[node]]
            print(f"{indent}{feat_name} <= {thresholds[node]:.3f}")
            # 左子节点信息
            left_node = children_left[node]
            print(f"{indent}    左分支: MSE={mse_values[left_node]:.3f}, 样本数={sample_counts[left_node]}")
            traverse(left_node, depth + 1)
            # 右子节点信息
            right_node = children_right[node]
            print(f"{indent}    右分支: MSE={mse_values[right_node]:.3f}, 样本数={sample_counts[right_node]}")
            traverse(right_node, depth + 1)

    traverse(0)

# 调用函数输出
print_reg_tree_details(regressor, list(X.columns))

关于show_weights=True的说明

这个参数仅适用于分类决策树,用于显示各类别的权重分布;回归树没有类别权重的概念,因此添加该参数不会对输出产生任何变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:45:34