我目前正在研究一个分类问题,并希望创建特征重要性的可视化。我使用已经提供特征重要性图的 Python XGBoost 包。但是,我发现 shap ( https://github.com/slundberg/shap ),这是一个 Python 库,可以根据树分类器为特征重要性创建非常好的图。一切正常,我也可以将创建的图保存为 PNG,但是,如果我尝试将其保存为 PDF 或 SVG,则会出现异常。这是我在做什么:
首先,我训练 XGBoost 模型并取回由 表示的模型bst。
train = remove_labels_for_binary_df(dataset_fc_baseline_1[0].train)
test = remove_labels_for_binary_df(dataset_fc_baseline_1[0].test)
results, bst = xgboost_with_bst(*transform_feat_to_num(train, test))
Run Code Online (Sandbox Code Playgroud)
然后我创建 shap 值,使用这些值来创建汇总图并保存创建的可视化。如果我将绘图另存为plt.savefig('shap.png').
import shap
import matplotlib.pyplot as plt
shap.initjs()
explainer = shap.TreeExplainer(bst)
shap_values = explainer.shap_values(train)
fig = shap.summary_plot(shap_values, train, show=False)
plt.savefig('shap.png')
Run Code Online (Sandbox Code Playgroud)
但是,我需要 PDF 或 SVG 图而不是 png,因此尝试保存它plt.savefig('shap.pdf'),通常可以正常工作,但会为 shap 图产生以下异常。
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-39-49d17973f438> in <module>()
1 fig = shap.summary_plot(shap_values, train, …Run Code Online (Sandbox Code Playgroud)