如何在 XGBoost 库的 plot_tree 函数中包含特征名称?
How do I include feature names in the plot_tree function from the XGBoost library?
我一直在使用 XGBoost 库来开发二元分类模型。训练完我的模型后,我有兴趣可视化各个树以更好地理解我的模型预测。
为此,XGBoost 提供了一个 plot_tree 函数,但它只显示特征的整数索引。这是我的一棵树的示例:
如何在此图像中包含特征名称而不是特征索引 (f28
)?
xgboost 中的 plot_tree
函数有一个参数 fmap
,它是 'feature map' 文件的路径;这包含特征索引到特征名称的映射。
关于特征映射文件的文档很少,但它是一个制表符分隔的文件,其中第一列是特征索引(从 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')
使用此函数显示绘图:
我一直在使用 XGBoost 库来开发二元分类模型。训练完我的模型后,我有兴趣可视化各个树以更好地理解我的模型预测。
为此,XGBoost 提供了一个 plot_tree 函数,但它只显示特征的整数索引。这是我的一棵树的示例:
如何在此图像中包含特征名称而不是特征索引 (f28
)?
xgboost 中的 plot_tree
函数有一个参数 fmap
,它是 'feature map' 文件的路径;这包含特征索引到特征名称的映射。
关于特征映射文件的文档很少,但它是一个制表符分隔的文件,其中第一列是特征索引(从 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')
使用此函数显示绘图: