首页 > 解决方案 > 使用逻辑回归时如何打印特征重要性的简单列表?

问题描述

我正在使用此处找到的数据集: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 上看到了类似的问题,但没有显示功能名称及其重要性的答案。

标签: pythonscikit-learnlogistic-regression

解决方案


为此,您可以使用一种名为 的方法shap我绝对建议您在深入研究代码之前阅读有关 SHAP 的内容,因为它对于您和其他人准确理解您所呈现的内容非常重要。

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

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)

推荐阅读