SHAP を用いて shap.summary_plot() で特徴量重要度のグラフを出力できるが、定量データとして取得したい場合がある。 以下のようにすればDataFrameにできる。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import lightgbm as lgb
from sklearn import datasets
import shap

X = train_df.drop('target', axis=1)
y = train_df['target']

model = lgb.train(
    params={},
    train_set=lgb.Dataset(X, y)
)

explainer = shap.TreeExplainer(model)
shap_values = explainer(X)

pd.DataFrame(shap_values.values[0], columns=["feature_importance"], index=X.columns).sort_values(
    by="feature_importance", ascending=False)
feature_importance
age0.045195
gender0.001254