如何解决形状绘图出错
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,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,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
保存了 shapley 值,base_values
和 data
。在检查变量之前,我遇到了同样的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。