Python,shap 包:如何绘制依赖图网格?

use*_*916 4 python matplotlib shap

我正在尝试绘制shap包中的依赖图网格。这是我想要的示例的 MWE 代码:

fig, axs = plt.subplots(2,8, figsize=(16, 4), facecolor='w', edgecolor='k') # figsize=(width, height)
fig.subplots_adjust(hspace = .5, wspace=.001)

axs = axs.ravel()

for i in range(10):

    axs[i].contourf(np.random.rand(12,12),5,cmap=plt.cm.Oranges)
    axs[i].set_title(str(250+i))

plt.show()
Run Code Online (Sandbox Code Playgroud)

我想要的布局示例

这是我到目前为止的代码。有几件事不起作用:

  1. 我的网格的图形大小不受我的figsize参数影响
  2. 我的代码在网格下方绘制了更大版本的图。
  3. 网格中仅显示一个依赖图。
fig, axs = plt.subplots(1,8, figsize=(4, 2))
axs = axs.ravel()

for b in X_test.columns[:3]:
    for a in X_test.columns[:3]:
        shap.dependence_plot((a, b), shap_interaction_values, X_test)
Run Code Online (Sandbox Code Playgroud)

我得到的图像: 我得到了什么。

Pau*_*aul 8

import shap
import matplotlib.pyplot as plt

X = ...
shap_values = ...

columns = X.columns

# adjust nrows, ncols to fit all your columns
fig, axes = plt.subplots(nrows=4, ncols=3, figsize=(20, 14))
axes = axes.ravel()

for i, col in enumerate(columns):
    shap.dependence_plot(col, shap_values, X, ax=axes[i], show=False)
Run Code Online (Sandbox Code Playgroud)