如何获取每个类别的SHAP值?

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

我想获得每堂课的实际价值。我已经检查了教程,并找到了下面的示例如何执行此操作。但是,该代码不起作用,因为

shap_value.shape
是 (10,None,6)。 10 是您的样本数,4 是类别。

import datasets
import pandas as pd
import transformers
import shap

dataset = datasets.load_dataset("emotion", split="train")
data = pd.DataFrame({"text": dataset["text"], "emotion": dataset["label"]})

# load the model and tokenizer
tokenizer = transformers.AutoTokenizer.from_pretrained(
    "nateraw/bert-base-uncased-emotion", use_fast=True
)
model = transformers.AutoModelForSequenceClassification.from_pretrained(
    "nateraw/bert-base-uncased-emotion"
).cuda()

# build a pipeline object to do predictions
pred = transformers.pipeline(
    "text-classification",
    model=model,
    tokenizer=tokenizer,
    device=0,
    return_all_scores=True,
)
explainer = shap.Explainer(pred)
shap_values = explainer(data["text"][:3])
shap.plots.bar(shap_values[:, :, "joy"].mean(0))

有什么方法可以获取每个班级的条形图吗?

machine-learning deep-learning nlp shap xai
1个回答
0
投票

安装 shap 41.0 后,您必须执行以下操作: !pip3 install mxnet-mkl==1.6.0 numpy==1.23.1 。之后如果遇到: dtype: np.bool 你可以在源代码中更改: np.bool_ 。当然,您可以看到一些警告,但是会生成图表!

编辑:如果您想使用当前版本,只需执行以下操作:!pip3 install mxnet-mkl==1.6.0 numpy==1.23.1

© www.soinside.com 2019 - 2024. All rights reserved.