在利用SHAP库进行机器学习模型的可解释性分析时,遇到了一个棘手的问题:图表中的负号无法正确编码和显示,具体错误信息为“Glyph 8722 missing from current font”。这一问题直接影响了图表的可读性和模型解释的有效性。
初步分析表明,该问题可能与所使用的字体不支持特定字符有关,类似于Matplotlib在处理中文字体时遇到的兼容性问题。尽管尝试通过设置plt.rcParams['axes.unicode_minus'] = False
来解决问题,但并未达到预期效果。
使用中文字体时,图表中的负号无法正常显示,如图所示:
切换到英文字体后,负号能够正常显示,但此时中文文本则无法正确呈现,如图所示:
为了同时支持中文和符号的正确显示,推荐使用一种同时兼容中英文的字体,例如微软雅黑(Microsoft YaHei)。通过设置Matplotlib的字体配置,可以有效解决这一问题。具体代码如下:
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
应用上述设置后,图表中的负号及中文文本均能正常显示,如图所示: