构建随机森林分类模型后查看决策树遇feature_names数量不匹配错误
解决Random Forest决策树可视化时特征名数量不匹配的问题
问题本质
你遇到的ValueError核心原因是:训练tr_classifier时用的特征总数是155个,但你现在传入export_text的X.columns只有19个特征,两者完全不匹配。
具体解决步骤
确认训练模型时的特征集细节
你的原始特征是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()使用训练时的完整特征名传入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))排查数据不一致的根源
当前X只有19个特征,大概率是因为:- 你加载了原始未做预处理的数据集,而非训练时用的预处理后数据集
- 训练代码中的特征预处理步骤(编码、筛选等)没有同步到当前的代码环境中
- 训练模型后修改了特征集,但未重新训练模型
内容的提问来源于stack exchange,提问作者Dharmini
相关产品推荐
相关产品推荐

