如何在Python中获取HistGradientBoostingClassifier的特征重要性?
解决HistGradientBoostingClassifier获取特征重要性的报错问题
你遇到的AttributeError是因为旧版本scikit-learn中的HistGradientBoostingClassifier并没有feature_importances_属性,取而代之的是get_feature_importances()方法。以下是获取包含特征及其重要性占比列表的具体步骤:
步骤1:获取原始特征重要性
确保模型已经完成训练(调用过model.fit(X, y)),然后用方法获取重要性数组:
importances = model.get_feature_importances()
步骤2:计算重要性占比并生成配对列表
假设你有特征名称的列表feature_names(比如来自数据集的列名),可以通过以下代码生成带占比的特征重要性列表:
# 计算总重要性 total_importance = sum(importances) # 生成特征-占比配对列表,占比保留两位小数 feature_importance_list = [ (feature, round(imp / total_importance * 100, 2)) for feature, imp in zip(feature_names, importances) ] # 可选:按重要性占比从高到低排序 feature_importance_list.sort(key=lambda x: x[1], reverse=True)
额外说明
- 如果你的scikit-learn版本在0.24及以上,
HistGradientBoostingClassifier已经支持feature_importances_属性,若仍报错,请检查模型是否完成训练(未调用fit方法会导致属性不存在)。 - 生成的列表中每个元素是元组,格式为
(特征名称, 重要性占比%),方便查看和后续处理。
内容的提问来源于stack exchange,提问作者Debasis
相关产品推荐
相关产品推荐

