Python 负责本地形状值的前N个特征

Python 负责本地形状值的前N个特征,python,machine-learning,shap,Python,Machine Learning,Shap,我一直在尝试在我的ML中使用SHAP值来帮助理解每个特性对本地结果的贡献。我知道所有特征的形状值的总和解释了为什么预测值与基线值不同。这使我们能够将预测分解为如下图形: explainer = shap.TreeExplainer(model) shap_values = explainer.shap_values(X_train) i = 400 shap.force_plot(explainer.expected_value, shap_values[i], features=X_train

我一直在尝试在我的ML中使用SHAP值来帮助理解每个特性对本地结果的贡献。我知道所有特征的形状值的总和解释了为什么预测值与基线值不同。这使我们能够将预测分解为如下图形:

explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_train)
i = 400
shap.force_plot(explainer.expected_value, shap_values[i], features=X_train.loc[400], feature_names=X_train.columns)

我想知道是否有办法获得对形状值有正面和负面影响的前3个特性 以我为例

  • LSTAT、PTRATIO和INDUS有助于将价值向右推
  • RM、Tax、Rad向另一个方向推进

  • 我需要这些功能作为阵列或数据帧,以便我可以对它们执行进一步的操作

    为您的示例做出积极贡献的前三大功能:

    i = 400
    features = X_train.columns
    id_sorted = np.argsort(shap_values[i])
    top3_positive = features[id_sorted[:-4:-1]]
    

    造成负面影响的前三大功能:

    top3_negative = features[id_sorted[:3]]
    

    确切的型号是什么?请发一封信。