【问题标题】:Overlapping/crowded labels on y-axis pythony轴python上的重叠/拥挤标签
【发布时间】:2020-09-20 05:34:15
【问题描述】:

我有点急于完成这个明天向项目所有者的演示。我们是德国的一小群经济系学生,他们试图用 Python 搞清楚机器学习。我们设置了一个随机森林分类器,并迫切希望在一个整洁的图中向估计器显示重要特征。通过应用谷歌搜索,我们提出了以下解决方案,这种解决方案可以解决问题,但由于 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】:

    您正在使用np.argsort,它将返回一个包含许多索引的 numpy 数组。您正在使用该数组作为 Y 轴的标签,因此标签重叠。

    我的建议是为 sorted_idx 使用索引,例如,

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

    这只会为 1 个标签绘制。

    【讨论】:

      【解决方案2】:

      知道了,伙计们! 正如我们在德国所说的“Geistesblitz”! (精神上的闪电) 看到第三行中的变量feature_importances 了吗?加feature_importnaces[:-15] 仅查看特征的上半部分并松开 y 轴。是的!!!这很好,因为有一些不太重要的功能。

      【讨论】:

        【解决方案3】:

        我看到了您的解决方案,我只想在此处添加此链接以解释原因:How to change spacing between ticks in matplotlib?

        刻度标签之间的间距完全由轴上刻度之间的间距决定。因此,在给定刻度标签之间获得更多空间的唯一方法是使轴更大。

        我链接的问题表明,通过使图表足够大,您的轴标签自然会更好地间隔。

        【讨论】:

          猜你喜欢
          • 2021-11-15
          • 1970-01-01
          • 1970-01-01
          • 2021-01-22
          • 1970-01-01
          • 2012-03-14
          • 2019-01-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多