Shap работает для двоичного, но не для мультикласса (https://github.com/slundberg/shap) - PullRequest
0 голосов
/ 15 января 2019

Проблема в том, что Shap не работает для мультиклассового LogisticRegresssion, а для двоичного класса он работает.

Я попытался сгенерировать случайные данные для двоичной модели и использовать shap для создания графика, и это сработало! Однако, когда я генерирую 3 класса, я получаю сообщение об ошибке:

Traceback (most recent call last):
  File "C:/Users/clint.f/.PyCharmCE2018.2/config/scratches/scratch.py", line 28, in <module>
    shap_values = explainer.shap_values(X)
  File "C:\Users\clint.f\AppData\Local\Continuum\anaconda3\lib\site-packages\shap\explainers\linear.py", line 212, in shap_values
    return np.array(X - self.mean) * self.coef
ValueError: operands could not be broadcast together with shapes (1000,3) (3,3) 

import pandas as pd
import numpy as np
import shap
from sklearn.linear_model import  LogisticRegression
import copy


shap.initjs()
X = pd.DataFrame(np.random.rand(1000,3), columns=["A","B","C"])
y = np.random.randint(0, 3, (1000,))
clf = LogisticRegression(class_weight="balanced", random_state=0, solver="saga", multi_class="multinomial")
clf.fit(X,y)

explainer = shap.LinearExplainer(clf, X, feature_dependence="independent")
shap_values = explainer.shap_values(X)

Я ожидаю, что ошибка ValueError будет решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...