python - 形状绘图出错

标签 python shap

X = df.copy()

# Save and drop labels
y = df['class']
X = X.drop('class', axis=1)
cat_features = list(range(0, X.shape[1]))
model = CatBoostClassifier(iterations=2000, learning_rate=0.1, random_seed=12)
model.fit(X, y,  verbose=False, plot=False)

explainer = shap.Explainer(model)
shap_values = explainer(X)

shap.force_plot(explainer.expected_value, shap_values[0:5,:],X.iloc[0:5,:], plot_cmap="DrDb")

---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
<ipython-input-170-ba1eca12b9ed> in <module>
----> 1 shap.force_plot(10, shap_values[0:5,:],X.iloc[0:5,:], plot_cmap="DrDb")

~\anaconda3\lib\site-packages\shap\plots\_force.py in force(base_value, shap_values, features, feature_names, out_names, link, plot_cmap, matplotlib, show, figsize, ordering_keys, ordering_keys_time_format, text_rotation, contribution_threshold)
    101 
    102     if type(shap_values) != np.ndarray:
--> 103         return visualize(shap_values)
    104 
    105     # convert from a DataFrame or other types

~\anaconda3\lib\site-packages\shap\plots\_force.py in visualize(e, plot_cmap, matplotlib, figsize, show, ordering_keys, ordering_keys_time_format, text_rotation, min_perc)
    343             return AdditiveForceArrayVisualizer(e, plot_cmap=plot_cmap, ordering_keys=ordering_keys, ordering_keys_time_format=ordering_keys_time_format)
    344     else:
--> 345         assert False, "visualize() can only display Explanation objects (or arrays of them)!"
    346 
    347 class BaseVisualizer:

AssertionError: visualize() can only display Explanation objects (or arrays of them)!
试图用 shap 和我的数据进行绘图,但出错了,我实际上不明白为什么。没有发现任何关于这方面的信息。请解释如何避免此错误?
explainer.expected_value
-5.842052267820879

最佳答案

您应该将最后一行更改为:shap.force_plot(explainer.expected_value, shap_values.values[0:5,:],X.iloc[0:5,:], plot_cmap="DrDb")调用 shap_values.values而不仅仅是 shap_values , 因为 shap_values保存沙普利值,base_valuesdata .在检查变量之前,我遇到了同样的问题。

关于python - 形状绘图出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66726871/

相关文章:

python - 在一段代码或函数上禁用 pylint 执行

python - JSON 中的 HTML 标签(在 Python 中)

R:如何计算和绘制SHAP交互值?

python - 将回归线添加到 shap.dependence_plot

python - 在 Python 中设置函数签名

python - Sympy:如何显示导致除以零的条件?

python - 为什么这个函数不抓取我的 csv 文件中的数据?

python - 无 类型不可迭代 (RecurrentTabularExplainer)

python - 阴谋冲刺 : How to integrate SHAP values

python - 如何从Python中的字符索引中查找行号?