Я использую 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