python - 如何在 XGBoost 库的 plot_tree 函数中包含特征名称?

我一直在使用 XGBoost库来开发二元分类模型。训练完我的模型后,我有兴趣可视化各个树以更好地理解我的模型预测。

为此,XGBoost 提供了一个 plot_tree函数,但它只显示特征的整数索引。这是我的一棵树的示例:

如何在此图像中包含特征名称而不是特征索引 (f28)?

最佳答案

xgboost 中的plot_tree 函数有一个参数fmap,它是“特征映射”文件的路径;这包含特征索引到特征名称的映射。

关于特征映射文件的文档很少,但它是一个制表符分隔的文件,其中第一列是特征索引(从 0 开始到特征数结束),第二列是特征名称和最后一列是显示特征类型的指标(q=定量特征,i=二元特征)。

feature_map.txt 文件示例:

0    feature_name_0    q
1    feature_name_1    i
2    feature_name_2    q
…          …           … 

使用这个制表符分隔的文件,您可以从经过训练的模型实例中绘制树:

import xgboost
model = xgboost.XGBClassifier()

# train the model
model.fit(X, y)

# plot the decision tree, providing path to feature map file

xgboost.plot_tree(model,  num_trees=0, fmap='feature_map.txt')

使用这个函数显示绘图:

https://stackoverflow.com/questions/60186747/

相关文章:

node.js - Firebase 函数错误 : The default Firebase app

typescript - typescript 中的 bool 列表是否有 "all"或 "any"

oracle - 在 Apex 中提交表单之前添加确认

ios - 从 XCode 的调试导航器中清除崩溃日志

r - 确定一周中的某一天是否是 R 中每月的第 2/3 等星期一/星期二/等

bash - 如何在 bash 中循环遍历 jq 唯一数组?

powershell - Terraform azurerm_virtual_machine_ext

list - 得到 "Fatal error: Index out of range": show

google-cloud-platform - 共享 VPC 和 VPC 对等组合

javascript - 如何模拟 axios.create([config]) 函数以返回其实例方