1

我有一组向量。向量分为三个不同的类别,即。A、B 和 C。现在,我需要根据以下标准对它们进行聚类:

  1. 每个集群中应该有最少 1 个和最多 3 个向量。
  2. 每个集群中的所有向量都应该属于不同的类型。.ie,一个簇不应包含 2 个或多个相同类型 A、B 或 C 的向量。
  3. 如果这里是一个包含一组向量的簇,那么任何两个向量之间的距离(比如说欧几里德距离)都小于预定义的阈值 T。
  4. 如果有一个包含 2 个或更多向量的簇(当然最多 3 个),那么这些向量中的一个必须是 A 类型。

是否有任何现有的算法来执行这种类型的聚类?假设我需要从头开始,那么根据上述条件对向量进行聚类需要遵循哪些步骤?

4

1 回答 1

1

您可以使用约束引擎解决此类问题。像choco这样的东西包括对您列出的所有约束的支持(以及优化,因为我猜如果您有歧义,您想要最少数量的集群?)。

我不是 choco 方面的专家,但如果对我有帮助的话,我在学习它时做了笔记(这些都是关于约束解决的,但我昨晚进行了优化工作,很快就会添加更多内容)。有一个明确的学习曲线,但是对于如此复杂的事情,我认为你不需要花更多的时间来学习而不是自己编写一个解决方案(然后在未来你有一个新的通用工具,而不是一堆非常具体的代码)

并且 choco 并不是独一无二的——还有很多这样的——谷歌最近打包了一些

于 2012-04-12T12:46:43.483 回答