在SHAP蜂群图中,特征的顺序是按照此前计算得出的特征重要性进行排序的。如果我们想要自定义特征的顺序,我们可以将特征按照我们想要的顺序排列,然后在调用shap.summary_plot()
时进行引用。以下是一个简单的示例代码,其中特征的顺序被自定义为['feature_3', 'feature_1', 'feature_2']:
import shap
import pandas as pd
shap.initjs()
# 构造数据
X,y = shap.datasets.diabetes()
X_df = pd.DataFrame(X, columns=shap.datasets.diabetes().feature_names)
# 训练模型
model = xgboost.train({"learning_rate": 0.01}, xgboost.DMatrix(X_df, label=y), 100)
# 计算SHAP值
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_df)
# 自定义特征顺序
feature_order = ['feature_3', 'feature_1', 'feature_2']
# 生成SHAP蜂群图
shap.summary_plot(shap_values, X_df, plot_type="bar", feature_names=shap.datasets.diabetes().feature_names,
sort=True, color='coolwarm', plot_size=(12,4), ordering_keys=feature_order)
通过设置ordering_keys
参数,我们可以将特征排列在我们想要的顺序中。