在使用SHAP处理TF固定模型时,遇到即时DNNClassifier的问题。 由于罐装DNNClassifier不支持预报,我可以在模型中使用什么参数?
explainer = shap.KernelExplainer(模型,数据,链接)
model:函数或iml.Model 用户提供的函数,它采用样本矩阵(#个样本x#个特征)并计算这些样本的模型输出。输出可以是向量(#个样本)或矩阵(#个样本x#个模型输出)。
classifier = tf.estimator.DNNClassifier(hidden_units=[1024, 512, 256],
feature_columns=feature_columns,
model_dir='/tmp/stack/All',
n_classes=2,
optimizer='Adagrad',
config=tf.estimator.RunConfig().replace(save_summary_steps=2)
)
predictions = classifier.predict(input_fn=lambda: eval_input_fn(test_x,
labels=None,
batch_size=400),
predict_keys="probability")
explainer = shap.KernelExplainer(predictions, test_x)
简而言之,对shap.KernelExplainer模型参数的期望是什么?替换上面的“预测”是正确的事情。
答案 0 :(得分:0)
我没有确切的答案,但是您是否看过作者提供的this notebook?最后一部分可能会帮助您:
```
# Here we take the Keras model trained above and explain why it makes different predictions
# for different individuals. SHAP expects model functions to take a 2D numpy array
# as input, so we define a wrapper function around the original Keras predict function.
def f(X):
return regression.predict([X[:,i] for i in range(X.shape[1])]).flatten()
explainer = shap.KernelExplainer(f, X.iloc[:50,:])
```