首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用KernelExplainer和LinearExplainer建立线性模型瀑布模型

用KernelExplainer和LinearExplainer建立线性模型瀑布模型
EN

Stack Overflow用户
提问于 2022-05-30 17:00:47
回答 1查看 589关注 0票数 2

我正在研究二进制分类,并试图用SHAP框架解释我的模型。

我使用的是logistic回归算法。我想用KernelExplainerLinearExplainer来解释这个模型。

所以,我尝试了下面来自So here的代码

代码语言:javascript
复制
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_breast_cancer
from shap import TreeExplainer, Explanation
from shap.plots import waterfall

X, y = load_breast_cancer(return_X_y=True, as_frame=True)

idx = 9
model = LogisticRegression().fit(X, y)
background = shap.maskers.Independent(X, max_samples=100)
explainer = KernelExplainer(model,background)
sv = explainer(X.iloc[[5]])   # pass the row of interest as df
exp = Explanation(
    sv.values[:, :, 1],         # class to explain
    sv.base_values[:, 1],
    data=X.iloc[[idx]].values,  # pass the row of interest as df
    feature_names=X.columns,
)
waterfall(exp[0])  

这引发了一个错误,如下所示

AssertionError:作为数据对象传递的未知类型:

如何使用logistic regression和SHAP LinearExplainer解释SHAP KernelExplainer模型?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-30 18:22:33

计算-从以下几个方面可以做到:

代码语言:javascript
复制
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_breast_cancer

from shap import LinearExplainer, KernelExplainer, Explanation
from shap.plots import waterfall
from shap.maskers import Independent

X, y = load_breast_cancer(return_X_y=True, as_frame=True)

idx = 9
model = LogisticRegression().fit(X, y)

explainer = KernelExplainer(model.predict, X)
sv = explainer.shap_values(X.loc[[5]])   # pass the row of interest as df

exp = Explanation(sv,explainer.expected_value, data=X.loc[[idx]].values, feature_names=X.columns)
waterfall(exp[0])

注意:KernelExplainer不支持掩码,在本例中,lociloc都会返回相同的内容。

代码语言:javascript
复制
background = Independent(X, max_samples=100)
explainer = LinearExplainer(model,background)
sv = explainer(X.loc[[5]])   # pass the row of interest by index
waterfall(sv[0])

请注意,LinearExplainer的结果可以提供给瀑布“原样”。

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

https://stackoverflow.com/questions/72437807

复制
相关文章

相似问题

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