当前位置: 首页 > 面试题库 >

重新排序群集编号以获取正确的对应关系

吕鸿朗
2023-03-14
问题内容

我有一个数据集,使用两个不同的聚类算法进行了聚类。结果大致相同,但是群集编号是置换的。现在,为了显示颜色编码的标签,我希望标签ID对于相同的群集是相同的。如何获得两个标签ID之间的正确排列?

我可以使用蛮力来做到这一点,但也许有更好/更快的方法。我将不胜感激任何帮助或指针。如果可能的话,我正在寻找一个python函数。


问题答案:

寻找最佳匹配的最著名的算法是 匈牙利方法

由于无法用几句话来解释它,因此我必须向您推荐您选择的书,或Wikipedia文章“匈牙利算法”。

您只需选择对应矩阵的最大值,然后删除该行和列,就可能获得良好的结果(即使差异确实很小,即使是完美的)。



 类似资料:
  • 问题内容: 我有一个集合,一个对象(无序) 的ID 属性,一个(有序)列表 的ID 。 ID列表未排序 。我想在我的收藏夹中创建一个对象列表,并根据ID列表进行排序。 我在Guava或Apache Commons中没有看到用于此目的的方法-但这正是我想要的。具有良好实现的库函数。 问题答案: 听起来您的ID列表有自己的顺序;您不仅在使用自然顺序,对吗? 这是番石榴解决方案: 而已。没什么 (公开:

  • 问题内容: 我在纱线簇中运行我的spark应用程序。在我的代码中,我使用队列的可用数量核心在数据集中创建分区: 我的问题:如何通过编程方式而不是通过配置获取可用的队列核心数? 问题答案: 有多种方法可以从Spark获取执行程序的数量和集群中的核心数量。这是我过去使用的一些Scala实用程序代码。您应该可以轻松地使其适应Java。有两个关键思想: 工人人数是执行者人数减去一或。 每个工人的核心数可以

  • 纵横比=高度/宽度总是 我有一个对象在OpenCV/Java。 我可以得到它的一个数组,其中包含4个类型为Point和Point定义的x/y值的对象。 现在我想对这4个点进行排序,使左上角的点是数组的第一个元素,然后顺时针方向,使上下角的点是第四个元素。 我假设矩形没有旋转太多(只是一些小角度),例如。 我已经在例子中指出了哪个点是左上(TL)。 怎么做呢? 你不需要特别告诉我OpenCV等,只要

  • 我不完全理解如何对自定义对象使用Java PriorityQueue(最大堆)。 我正在研究LeetCode问题,代码必须按单词长度对句子中的单词重新排序。我的直觉是,我可以使用PriorityQueue来为我进行单词排序。为此,我想我可以使用自定义对象跟踪单词: 然后: 我用来测试的第一句话是“”。(来自LC帖子。) 我希望的顺序是:“”(最短到最长的语序) 但是当我运行上面的代码并检查调试器中

  • 我的列表中有这样一个< code>compareTo代码: 当我使用时,我得到以下错误: 当我将其更改为<code>if(this.long1 现在,重复确实发生了,需要正确排序。重复项是出现在第一个还是最后一个并不重要,只要它们按顺序正确分组,如下所示: 我该如何正确地做到这一点?谢谢你。 更新 该列表仍在按以下所有建议排序。这是因为它是一个

  • 我想以编程方式获取maven包的基于数字的版本号——更具体地说:我需要RELEASE版本的数字。 例如: JUnit是一个众所周知的maven包。根据http://mvnrepository.com/artifact/junit/junit,当前版本为4.12。 因此,给定工件标识符,我希望收到相应的RELEASE版本号(在此特定情况下为4.12)。由于maven是某种存储库,我希望有一个简单的方