首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将SHAP值转换为概率?

如何将SHAP值转换为概率?
EN

Stack Overflow用户
提问于 2021-11-22 08:27:57
回答 1查看 194关注 0票数 0

我使用Python中的Shap库来解释我使用Catboost实现的模型。当尝试使用多个绘图时,我使用以下命令:

代码语言:javascript
复制
shap.summary_plot(shap_values, X_train)
shap.force_plot(explainer.expected_value, shap_values, X_train)
shap.dependence_plot("some feature", shap_values, X_train)

每种方法的输出都给出了x轴上的Shap值,但是我无法解释它,并且认为使用概率更容易。我怎么能做到这一点呢?

我在Catboost上读到了它不能使用:explainer = shap.TreeExplainer(model,data = X,model_output='probability')

因此,我不知道该怎么做。

EN

回答 1

Stack Overflow用户

发布于 2021-11-22 14:28:31

可以考虑的一件事是在force_plot上使用日志链接,这在the shap vignette中显示,例如:

代码语言:javascript
复制
import shap
import numpy as np
from sklearn.model_selection import train_test_split
shap.initjs()

X,y = shap.datasets.iris()
y = np.where(y==1,1,0)

X_train,X_test,Y_train,Y_test = train_test_split(X,y, test_size=0.2, random_state=0)

from catboost import CatBoostClassifier, Pool

model = CatBoostClassifier(verbose=False)
model.fit(X_train,Y_train)

explainer = shap.KernelExplainer(model.predict_proba, X_train, link="logit")
shap_values = explainer.shap_values(X_test, nsamples=10)
shap.force_plot(explainer.expected_value[2], shap_values[2], X_test, link="logit")

由此,您可以跨越所有样本,了解每个特征对最终概率的贡献

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70062847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档