我一直在使用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')
使用此功能显示图: