Проблема в том, что 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 будет решена.