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

构建随机森林分类模型后查看决策树遇feature_names数量不匹配错误

解决Random Forest决策树可视化时特征名数量不匹配的问题

问题本质

你遇到的ValueError核心原因是:训练tr_classifier时用的特征总数是155个,但你现在传入export_text的X.columns只有19个特征,两者完全不匹配。

具体解决步骤

  1. 确认训练模型时的特征集细节
    你的原始特征是19个,但训练时大概率对分类特征(比如Ethnicity、Gender、Diagnosis这类)做了独热编码/虚拟变量转换,把单个分类列拆成了多个二进制特征,导致总特征数膨胀到155。
    直接检查训练时的特征矩阵:

    # 替换成你训练模型时用的特征矩阵变量名(比如X_train)
    print("训练时特征数量:", X_train.shape[1])
    # 如果X_train是DataFrame,直接打印所有特征名
    print("训练时特征列表:", X_train.columns.tolist())
    # 如果用了ColumnTransformer/Pipeline,从预处理组件提取特征名
    # 示例(假设预处理组件叫preprocessor):
    # train_feature_names = preprocessor.get_feature_names_out()
    
  2. 使用训练时的完整特征名传入export_text
    把上面拿到的155个训练特征名列表传给feature_names参数,替换当前的X.columns:

    from sklearn.tree import export_text
    
    # 假设train_feature_names是你拿到的155个特征名列表
    print(export_text(tr_classifier.estimators_[0], 
                      spacing=3, decimals=3,
                      feature_names=train_feature_names))
    
  3. 排查数据不一致的根源
    当前X只有19个特征,大概率是因为:

    • 你加载了原始未做预处理的数据集,而非训练时用的预处理后数据集
    • 训练代码中的特征预处理步骤(编码、筛选等)没有同步到当前的代码环境中
    • 训练模型后修改了特征集,但未重新训练模型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:52:57