shap.force_plot () повышает Исключение: в v0.20 force_plot теперь требует базовое значение в качестве первого параметра - PullRequest
0 голосов
/ 27 июня 2019

Я использую Catboost и хотел бы визуализировать shap_values:

from catboost import CatBoostClassifier
model = CatBoostClassifier(iterations=300)
model.fit(X, y,cat_features=cat_features)

pool1 = Pool(data=X, label=y, cat_features=cat_features)
shap_values = model.get_feature_importance(data=pool1, fstr_type='ShapValues', verbose=10000)

shap_values.shape
Output: (32769, 10)
X.shape
Output: (32769, 9)

Затем я делаю следующее, и возникает исключение:

shap.initjs()
shap.force_plot(shap_values[0,:-1], X.iloc[0,:])

Исключение: Вv0.20 force_plot теперь требует базового значения в качестве первого параметра!Попробуйте shap.force_plot (объяснение.expected_value, shap_values) или для моделей с несколькими выходами попробуйте shap.force_plot (объяснение.expected_value [0], shap_values ​​[0]).

Следующие работы, но яхотел бы заставить force_plot () работать:

shap.initjs()
shap.summary_plot(shap_values[:,:-1], X)

Я читаю Документацию, но не могу найти объяснения.Я попытался:

explainer = shap.TreeExplainer(model,data=pool1)
#Also tried:
explainer = shap.TreeExplainer(model,data=X)

, но я получаю: TypeError: ufunc 'isnan' не поддерживается для типов ввода, и входы не могут быть безопасно приведены к любым поддерживаемым типам в соответствии с правилом приведения ''safe' '

Может ли кто-нибудь указать мне правильное направление?THX

...