如何在使用Logistic Regression时打印特征重要性有序列表?
逻辑回归输出特征重要性(含特征名称)的实现方案
可以实现该需求。逻辑回归的拟合系数本身可用于表征特征重要性,结合你使用的RFE的内置属性,就能同时输出特征名称和对应的重要性排序,具体实现如下:
代码实现
假设你使用的训练特征为DataFrame格式(可直接提取列名作为特征名),在你现有代码的基础上,补充以下代码即可得到排序后的特征重要性列表:
import pandas as pd import numpy as np # 提取所有原始特征名,若你的训练数据不是DataFrame,可替换为自己存储的特征名列表 feature_names = X_train_SMOTE.columns # 1. 提取RFE的特征筛选结果和排名 selected_mask = log_reg_model.support_ rfe_rank = log_reg_model.ranking_ # 2. 提取最终训练好的逻辑回归的系数,取绝对值作为重要性数值(正负仅代表影响方向) lr_coef = log_reg_model.estimator_.coef_[0] feature_importance = np.abs(lr_coef) # 3. 拼接为DataFrame并筛选被RFE选中的特征 feature_df = pd.DataFrame({ "特征名称": feature_names, "是否被RFE选中": selected_mask, "RFE排名": rfe_rank }) selected_feature_df = feature_df[feature_df["是否被RFE选中"]].copy() selected_feature_df["特征重要性"] = feature_importance # 4. 按重要性从高到低排序输出 sorted_importance = selected_feature_df.sort_values("特征重要性", ascending=False).reset_index(drop=True) print(sorted_importance)
注意事项
- 上述代码适用于二分类场景,如果你是多分类任务,逻辑回归的
coef_会返回每个类别对应的系数,可根据需求取对应类别的系数,或对每个特征的所有类别系数取平均值/最大值作为整体重要性。 - 如果你需要保留特征对结果的影响方向,不需要对系数取绝对值即可,正系数代表特征值越高,样本被判定为正例的概率越高,负系数则相反。
- 如果你不需要提前用RFE筛选特征,直接使用未经过RFE封装的逻辑回归模型计算重要性的话,直接取
log_reg_model.coef_计算即可,不需要通过estimator_属性获取。
内容的提问来源于stack exchange,提问作者Tobias Funke
相关产品推荐
相关产品推荐

