我想获得每堂课的实际价值。我已经检查了教程,并找到了下面的示例如何执行此操作。但是,该代码不起作用,因为
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))
有什么方法可以获取每个班级的条形图吗?
安装 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