使用逻辑回归时如何打印特征重要性的简单列表?

Posted

技术标签:

【中文标题】使用逻辑回归时如何打印特征重要性的简单列表?【英文标题】:How to print a simple list of feature importance in when using Logistic Regression? 【发布时间】:2021-12-22 14:12:36 【问题描述】:

我正在使用此处找到的数据集:https://www.kaggle.com/pavansubhasht/ibm-hr-analytics-attrition-dataset

我的代码是:

from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression

log_reg_model = LogisticRegression(max_iter=1000, solver = "newton-cg")
log_reg_model = RFE(log_reg_model, 45) # using RFE to get the top 45 most important features
log_reg_model.fit(X_train_SMOTE, y_train_SMOTE) # fitting data
y_pred = log_reg_model.predict(X_test)
print("Model accruracy score: ".format(accuracy_score(y_test, y_pred)))
print(classification_report(y_test, y_pred))

我正在尝试按顺序打印出最重要的特征,就像在随机森林分类中使用 feature_importances_ 函数时一样。

以上使用 LR 是否可行?我在 Stack Overflow 上看到了类似的问题,但没有显示功能名称及其重要性的答案。

【问题讨论】:

【参考方案1】:

为此,您可以使用称为shap、I definitely would recommend reading about SHAP before diving right into the code 的方法,因为这对于您和其他人准确了解您所呈现的内容非常重要。

但是,如何在您的实施中发挥作用的一个示例是:

from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
import shap

log_reg_model = LogisticRegression(max_iter=1000, solver = "newton-cg")
# log_reg_model = RFE(log_reg_model, 45) # using RFE to get the top 45 most important features
log_reg_model.fit(X_train_SMOTE, y_train_SMOTE) # fitting data
y_pred = log_reg_model.predict(X_test)
print("Model accruracy score: ".format(accuracy_score(y_test, y_pred)))
print(classification_report(y_test, y_pred))

explainer = shap.LinearExplainer(log_reg_model, X_train_SMOTE)
shap_values = explainer.shap_values(X_test[:150])

shap.summary_plot(shap_values, feature_names = X_train_SMOTE.columns)

【讨论】:

以上是关于使用逻辑回归时如何打印特征重要性的简单列表?的主要内容,如果未能解决你的问题,请参考以下文章

如何获得逻辑回归特征对特定预测的相对重要性?

如何使用权重在逻辑回归中获得特征重要性?

使用逻辑回归进行特征选择

在实现逻辑回归模型时包括特征

获取转换后逻辑回归最重要特征的名称

当特征系数的符号在逻辑回归中发生变化时,如何根据特征系数做出决策/解释结果?