Y轴上重叠拥挤的标签

问题描述 投票:0回答:1

我有点急于完成这个项目,以便明天向项目负责人汇报。我们是德国的一小群经济系学生,试图用python来解决机器学习的问题。我们建立了一个随机森林分类器,并迫切希望在一个整洁的情节中显示估计器的重要特征。通过应用google搜索,我们得出了下面的解决方案,有点像在做手脚,但由于y轴上的标签重叠,让我们不满意。我们使用的代码是这样的。

feature_importances = clf.best_estimator_.feature_importances_
feature_importances = 100 * (feature_importances / feature_importances.max())
sorted_idx = np.argsort(feature_importances)

pos = np.arange(sorted_idx.shape[0])
plt.barh(pos, feature_importances[sorted_idx], align='center', height=0.8)
plt.yticks(pos, df_year_four.columns[sorted_idx])
plt.show()

为了保护隐私,我想说的是: y轴上的特征名称是重叠的(大约有30个)。我当时为了了解如何自己做这件事,找了matplotlib的文档,可惜找不到任何有用的东西。似乎训练和测试模型比理解matplotlib和创建图更容易:D。

非常感谢你的帮助和时间,我很感激。

python-3.x matplotlib machine-learning random-forest scrum
1个回答
0
投票

我看到了你的解决方案,我想在这里只添加这个链接来解释为什么。如何改变matplotlib中tick之间的间距?

ticklabels之间的间距完全由轴上ticks之间的空间决定。因此,获得更多ticklabels之间的空间的唯一方法是使轴变大。

我所链接的问题表明,将图形做得足够大,你的轴标签自然会有更好的间距。


0
投票

您使用的是 np.argsort 会返回一个有很多索引的numpy数组。而你正在使用这个数组作为Y轴的标签,因此会有标签的重叠。

我的建议是使用一个索引作为 sorted_idx 喜欢。

plt.yticks(pos, df_year_four.columns[sorted_idx[0]])

这只能绘制一个标签。


0
投票

知道了,伙计们! - "Geistesblitz",就像我们德国人说的那样!我们德国人说的 "Geistesblitz"! (精神闪电)请看变量 feature_importances 在顶部第三行? 添加 feature_importnaces[:-15]只查看上半部分的特征,并放宽Y轴。是的!!!。这样做很好,因为重要的功能少了很多。

© www.soinside.com 2019 - 2024. All rights reserved.