参数

默认参数格式:

plot_importance(booster, ax=None, height=0.2,xlim=None, ylim=None, 
				title='Feature importance',xlabel='F score', 
				ylabel='Features',importance_type='weight', 
				max_num_features=None,grid=True, show_values=True, 
				**kwargs)

booster : 这里放入训练好的模型。model
ax :设置画布大小的时候用。ax=ax
height :图中柱子的宽度,默认为0.2。height=0.5
xlim : x轴值的范围。xlim =(0,20)最小值为0,最大值为20
ylim : y轴值的范围。ylim =(0,20)最小值为0,最大值为20
title : 标题,默认为"Feature importance"。title=‘特征重要性排序’
xlabel :x轴标签,默认为"F score"。xlabel=‘得分’
ylabel : y轴标签,默认为"Features"。ylabel=‘特征’
importance_type : 重要性的计算方式。importance_type=“weight”(默认,在树中出现的次数/作为划分属性的次数);importance_type= “gain”(使用该特性分割的平均增益/loss平均的降低);importance_type=“cover” (分割的平均覆盖率,其中覆盖率定义为受分割影响的样本数/对样本的覆盖度)
max_num_features :图上显示的最大主要特征数,默认为全部显示。max_num_features=10(画出前10个重要特征)
grid : 设置网格,默认为True。grid=False
show_values :显示特征重要性值,默认为True。show_values = False
kwargs : 发送一个键值对的可变数量的参数列表给函数

设置画布大小可以这样写:

from xgboost import plot_importance
fig,ax = plt.subplots(figsize=(25,15))
plot_importance(model,height=0.5, ax=ax,max_num_features=64)

如果importance_type选择gain或者cover,图片中的数值会非常长,如果想缩短数值的长度方法如下:

方式1—直接变为整数(不建议,可以试一下,画出来就知道了)
找到你xgboost安装包的路径(比如:C:\ProgramData\Anaconda3\Lib\site-packages\xgboost),里面有个py文件plotting.py,在113行左右,有一句ax.text(x + 1, y, x, va=‘center’)改为ax.text(x + 1, y, int(x), va=‘center’),保存后需要restart代码
方式2—保留n位小数(推荐)
找到你xgboost安装包的路径(比如:C:\ProgramData\Anaconda3\Lib\site-packages\xgboost),里面有个py文件plotting.py,修改两个地方:1、在plot_importance参数中增加一个参数r = 4(即保留4位小数,保留几位写几即可)2、在113行左右,有一句ax.text(x + 1, y, x, va=‘center’)改为ax.text(x + 1, y, round(x, r), va=‘center’),保存后需要restart代码
方式3—导出model中的数据自己画图
model.get_booster().get_score(importance_type=‘gain’)

备注:想要改变图形中的任何地方都可以在这个文件(plotting.py)中找到对应的代码进行修改

例如想改变数值与柱子之间的距离,可以修改ax.text(x + 1, y, round(x, r), va=‘center’)里面的x+1,变为x则是0距离,也可以加任意的距离值

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐