#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)