gpt4 book ai didi

python - 如何在Python中计算XGBoost分类器的联合特征贡献?

转载 作者:行者123 更新时间:2023-11-30 09:02:35 25 4
gpt4 key购买 nike

我提到了http://savvastjortjoglou.com/intrepretable-machine-learning-nfl-combine.html#Joint-Feature-Contributions这份精美的文件用于研究联合功能贡献。但这仅适用于 RandomForest 算法,因为树解释器(不适用于 xgboost)。 XGBoost 是否也有类似的出路?

基本上我想要实现的是找出所有特征组合对预测的共同贡献。例如,如果我有 a、b 和 c 作为我的特征,我想知道 ab、bc 和 ca 对预测结果的影响是什么。它与形状和石灰非常相似,但具有特征组合。

最佳答案

我做了一些研究并了解了 xgbfir 包。它将联合贡献写入 Excel 文件。您可以设置与之交互的级别。我围绕它编写了一些代码来生成解决该目的的图。

如果未安装该软件包

pip install xgbfir

安装后:

import xgbfir
from matplotlib import pyplot as plt

xgbfir.saveXgbFI(model, feature_names=X.columns, OutputXlsxFile='FI.xlsx')

joint_contrib = pd.read_excel('FI.xlsx')

xls = pd.ExcelFile('FI.xlsx')
df1 = pd.read_excel(xls, 'Interaction Depth 0')
df2 = pd.read_excel(xls, 'Interaction Depth 1')
df3 = pd.read_excel(xls, 'Interaction Depth 2')

frames = [df1, df2, df3]
joint_contrib = pd.concat(frames)

joint_contrib=joint_contrib.sort_values(by='Gain', ascending=True)
joint_contrib=joint_contrib.head(20)

height = joint_contrib['Gain']
bars = joint_contrib['Interaction']
y_pos = np.arange(len(bars))

plt.barh(y_pos, height)
plt.yticks(y_pos, bars)
plt.show()

这将给出增益方面排名前 20 的功能交互。

感谢 Philip Cho 向我介绍了 xgbfir。

点击链接了解有关 xgbfir 的更多信息

关于python - 如何在Python中计算XGBoost分类器的联合特征贡献?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60045641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com