Как распечатать простой список важных функций при использовании логистической регрессии?

#python #scikit-learn #logistic-regression

Вопрос:

Я использую набор данных, найденный здесь: 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? Я вижу похожие вопросы о переполнении стека, но нет ответов, которые показывали бы имена функций и их важность.

Ответ №1:

Для этого вы можете использовать метод, называемый 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)