SHAP 值无法在 SVM 模型上计算 shap 解释器

SHAP values cant compute shap explainer on SVM model

我正在尝试计算形状解释器,以便可视化我的模型。但是我不断收到以下错误:

Exception: The passed model is not callable and cannot be analyzed directly with 
the given masker! Model: SVC(C=300, probability=True)

我的代码:

model =  create_model(SVC, C=300, probability=True) #user defined function works right
model.fit(X_train, y_train)

explainer = shap.Explainer(model)
shap_values = explainer.shap_values(X_test)
 
shap.initjs()
shap.force_plot(explainer.expected_value,  X_train)

当我将 KernelExplainer 与 X_train 一起尝试时,我得到:

TypeError: 'SVC' object is not callable

编辑:

这里是 create_model 函数,它将训练变量和其他模型关键字作为参数:

def create_model(X_train, y_train, model, **kwargs):
    created_model = model(**kwargs)
    created_model.fit(X_train,y_train)
    
    return created_model

这里还有尝试推荐答案后的进度条: progress bar screenshot

首先,您需要传递模型的 predict 方法,而不是模型本身。

其次,(至少在我的设置中)Explainer 无法自动为 SVC 确定合适的解释器,因此您可能希望直接调用适当的解释器,例如KernelExplainer:

explainer = shap.KernelExplainer(model.predict)