shap.force_plot()引发例外:在v0.20中,force_plot现在需要将基值作为第一个参数

问题描述 投票:2回答:1

我正在使用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(explainer.expected_value,shap_values),或者对于多输出模型,请尝试shap.force_plot(explainer.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',并且根据转换规则“安全”无法将输入安全地强制转换为任何受支持的类型]]

有人能指出我正确的方向吗? THX

我正在使用Catboost,并希望可视化shap_values:从catboost中导入CatBoostClassifier模型= CatBoostClassifier(iterations = 300)model.fit(X,y,cat_features = cat_features)pool1 = Pool(...

decision-tree xgboost lightgbm catboost
1个回答
0
投票
我和下面有同样的错误-
© www.soinside.com 2019 - 2024. All rights reserved.