Python 使用特定大小的组进行聚类

Python 使用特定大小的组进行聚类,python,language-agnostic,artificial-intelligence,cluster-analysis,Python,Language Agnostic,Artificial Intelligence,Cluster Analysis,是否有任何类型的聚类算法专注于形成特定大小的聚类?这可以看作是一种分组算法,而不是一种聚类算法 基本上,给定n个数据点和一定大小k的固定组,根据特定分类器找到点到集合的最佳分布,这将有望最小化给定组中每个点的分类器距离 这个问题似乎与群集问题非常相似,但主要区别在于我们关注的是特定的群集大小,而不是群集的数量。有一个关于如何在ELKI中实现这种算法的教程: 还可以看看约束聚类算法;尽管通常这些算法只支持“必须链接”和“不能链接”约束,而不支持大小约束 您应该能够进行类似的修改,首先指定组大小,

是否有任何类型的聚类算法专注于形成特定大小的聚类?这可以看作是一种分组算法,而不是一种聚类算法

基本上,给定n个数据点和一定大小k的固定组,根据特定分类器找到点到集合的最佳分布,这将有望最小化给定组中每个点的分类器距离


这个问题似乎与群集问题非常相似,但主要区别在于我们关注的是特定的群集大小,而不是群集的数量。

有一个关于如何在ELKI中实现这种算法的教程:

还可以看看约束聚类算法;尽管通常这些算法只支持“必须链接”和“不能链接”约束,而不支持大小约束

您应该能够进行类似的修改,首先指定组大小,然后随机分配点,只要目标函数有所改进,就可以交换集群成员;类似于k-均值/k-均值。由于您可能会陷入局部极小值,请多次重新启动,并只保留最佳值

另请参见前面的问题,例如:。 和
您提出的问题是一个组合优化问题。这是非常重要的,知道你是否需要一个精确的解决方案,或者你能满足于一个近似的


如果您需要精确的解决方案,有一个解决方案将重点放在具有不同类型约束的集群上。您提到的约束可以在这个框架中进行编码。然而,您现在应该知道,这种方法可以扩展到具有特定大小的数据集

我能想到的是实施“饥饿”机制。如果为一个簇分配了太多的数据点,超过了临界值,则该簇将变得“膨胀”并分成两个(K-均值)或缩小大小(减少高斯混合中的标准偏差)。相反,如果质心变得“饥饿”,则应将其移除或扩大尺寸。缺点是,这无法精确达到预期的群集大小,并且还存在潜在的“全局饥饿”问题。可能重复