You need to enable JavaScript to run this app. Python回归树export_text列属性报错及模型评估、解读方法咨询
优惠活动
大模型
产品
解决方案
定价
更多

Python回归树export_text列属性报错及模型评估、解读方法咨询

export_text代码报错原因定位

报错的核心触发逻辑是:你传入feature_names参数时引用的X_train不是pandas DataFrame类型,是numpy.ndarray对象,而numpy数组本身没有.columns属性,因此触发AttributeError。

常见的触发场景

  • 拆分数据集时直接传入了numpy格式的特征矩阵,没有保留原DataFrame的列名结构
  • 特征预处理环节(如标准化、独热编码)的输出为numpy数组,没有转换回带列名的DataFrame格式

对应修复方案

  • 已知特征列名的情况下,直接把列名列表传给参数即可,例如:
    export_text(regr, feature_names=["房龄", "面积", "位置评分"])
    
  • 原特征为DataFrame的场景,可将预处理/拆分得到的ndarray转回带列名的结构,再调用.columns属性,例如:
    X_train = pd.DataFrame(X_train, columns=原特征列名列表)
    export_text(regr, feature_names=list(X_train.columns))
    
  • 不需要显示具体特征名的场景,直接删除feature_names参数即可,导出的文本会自动用X[0]、X[1]这类默认占位符标记特征位置

回归树模型的效果与效率规范解读

模型效果判断方法

你当前运行得到的结果为测试集上mse = 0.6600129794020736、r2 = 0.46983848613583734,绝对数值不能脱离数据本身的特征判断优劣,需要对照基准值做横向对比:

  • 先对比训练集和测试集的指标差:
    • 如果训练集MSE远低于0.66、训练集R²远高于0.47,说明模型存在过拟合,当前max_depth=2的设置可能过深
    • 如果训练集和测试集的MSE、R²差值在10%以内,说明模型的泛化稳定性较好
  • 再对照数据集本身的基准判断拟合度:
    • MSE需要和目标变量的方差做对比:如果目标变量自身的方差就在1左右,0.66的MSE属于合理范围;如果目标变量方差达到10以上,说明当前模型的拟合度严重不足
    • R²取值范围为(-∞, 1],越接近1代表模型对目标值波动的解释能力越强:0.47的R²代表模型可以解释测试集47%的目标值变化,属于基础基线水平——如果业务需要粗粒度趋势判断,这个结果是合格的;如果需要高精度数值预测,就需要调整max_depth、min_samples_split、min_samples_leaf等超参数优化效果

模型运行效率判断

  • 你当前设置max_depth=2的回归树结构极其简单,对十万样本以内规模的数据集,训练和推理都是毫秒级完成,不会出现性能瓶颈
  • 后续如果调整树深、扩大数据集规模,决策树的推理逻辑为纯条件分支判断,整体运行效率远高于集成树、神经网络类模型,评估效率时只需关注两个指标:单样本推理延迟、千级样本批量预测吞吐量即可

配套绘图代码的注意点

  • 如果你的plot_tree代码同样引用了X_train.columns作为特征名参数,会触发和export_text完全相同的报错,修复逻辑和上文一致
  • 导出PDF格式的树结构时,需要在plt.savefig方法中加入bbox_inches="tight"参数,否则会出现节点文字、图形被裁切的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.12 00:27:01