【问题标题】:How to get non-bar SHAP plot for LightGBM如何获得 LightGBM 的非条形 SHAP 图
【发布时间】:2023-01-21 07:34:34
【问题描述】:

我使用这段代码训练了一个 lightGBM 模型:

from flaml import AutoML    
#Select Hyper-Parameters
automl_final = AutoML()
automl_final.fit(
    X_train,
    y_train,
    estimator_list=["lgbm"],#,"xgboost"], 
    task="classification",
    metric="roc_auc",
    eval_method="cv",
    n_splits=3,
    time_budget=30,
    sample=True,
    append_log=True,
    log_type="all",
    model_history=True,
    log_training_metric=True,
    verbose=3,
    seed=1234,
    early_stop=True
) 

然后我使用这段代码生成了一个 SHAP 条形图:

lgbm = automl_final.model.estimator
explainer = shap.TreeExplainer(lgbm)
shap_values = explainer.shap_values(X_test)
shap.summary_plot(shap_values, X_test,plot_type="bar")

我得到了这个情节(如预期的那样):

现在,我希望看到如下所示的 SHAP 图:

所以我改用了这段代码:

shap.summary_plot(shap_values, X_test)

我仍然得到与以前相同的 SHAP 条形图图:

有谁知道如何生成类似于这个的图(对于 lightgbm - 对于 xgboost,代码工作正常):

【问题讨论】:

    标签: python plot lightgbm shap


    【解决方案1】:
    shap.plots.beeswarm(shap_values)
    

    如果需要,请检查documentation

    【讨论】:

      【解决方案2】:

      对于二进制类 lgbm 模型,使用一个类的 shap 值生成图 -

      lgbm = automl_final.model.estimator
      explainer = shap.TreeExplainer(lgbm)
      shap_values = explainer.shap_values(X_test)
      shap.summary_plot(shap_values[1], X_test)
      

      【讨论】:

        猜你喜欢
        • 2021-02-23
        • 2020-09-11
        • 2022-01-01
        • 2021-11-10
        • 2014-06-29
        • 1970-01-01
        • 1970-01-01
        • 2015-03-20
        • 1970-01-01
        相关资源
        最近更新 更多