[shap] shape of passed values is (34, 1), indices imply (34, 34)

変更箇所

# 古いコード
# 戻り値がリストの場合があった
# 例:分類問題では各クラスごとのSHAP値がリストで返される
# [[class0_shap_values], [class1_shap_values], ...]
# そのため最初の要素を取得
shap_values = explainer.shap_values(X)[0]

# 新しいコード
shap_values = explainer.shap_values(X)

# 安全な書き方
shap_values = explainer.shap_values(X)
if isinstance(shap_values, list):
    shap_values = shap_values[0]

理由

SHAP のバージョン 0.41.0 以前では、explainer.shap_values(X) の戻り値の形式が現在と異なっているため

Python,shap

Posted by vastee