如何限制绘图以显示前15个最重要的功能

时间:2018-09-17 23:13:39

标签: python matplotlib

从Logistic回归('lrmodel')中,我想绘制出它给出的功能重要性,但是我想将其限制在最相关的前15位,我该怎么做?我有以下代码:

feature_importance = abs(lrmodel.coef_[0])
feature_importance = 100.0 * (feature_importance / feature_importance.max())
sorted_idx = np.argsort(feature_importance)
pos = np.arange(sorted_idx.shape[0]) + .5

featfig = plt.figure(figsize=(18, 40))
featax = featfig.add_subplot(1, 1, 1)
featax.barh(pos, feature_importance[sorted_idx], align='center')
featax.set_yticks(pos)
featax.set_yticklabels(np.array(X.columns)[sorted_idx], fontsize=16)
featax.set_xlabel('Relative Feature Importance')

plt.tight_layout()   
plt.show()

Plot Output

谢谢!

1 个答案:

答案 0 :(得分:0)

通过argsort,您可以按顺序获得排序列表的索引。由于您想要前15个,所以将列表倒退[::-1],然后按如下所示进行绘制:

pos = np.arange(15) + .5
featax.barh(pos, feature_importance[sorted_idx][::-1][0:15], align='center')
featax.set_yticklabels(np.array(X.columns)[sorted_idx][::-1][0:15], fontsize=16)