algorithm - 将有序数据集分组为最少数量的簇

标签 algorithm list cluster-analysis

我有一个有序的加权项目列表,每个项目的权重小于或等于 N。 我需要将其转换为集群列表。 每个簇应该跨越几个连续的项目,并且一个簇的总权重必须小于或等于 N。

有没有一种算法可以做到这一点,同时最大限度地减少簇的总数并保持它们的权重尽可能均匀?

例如列表 [(a,5),(b,1),(c,2),(d,5)], N=6 应转换为 [([a],5),([b,c], 3),([d],5)]

最佳答案

由于数据集是有序的,一种可能的方法是为每个可能的集群分配一个“坏度”分数,并使用让人联想到 Knuth 的自动换行 (http://en.wikipedia.org/wiki/Word_wrap) 的动态程序来最小化坏度分数的总和。 badness 函数可让您探索最小化聚类数量(更大的常数项)和平衡它们(偏离平均项目数的更大惩罚)之间的权衡。

关于algorithm - 将有序数据集分组为最少数量的簇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3354896/

相关文章:

java - 如何找到指定月份的星期几的索引?

python - 高效的 Python 搜索算法,用于在移动时间间隔内查找匹配项

java - 更高效的排序算法?

ios - UIsearchbar 搜索电子邮件和用户名

machine-learning - 使用 WEKA 选择 Xmeans 中的最小和最大簇数

algorithm - 在 O(n) 中找到 j 和 i 索引之间的最大差异,使得 j > i 和 a[j] > a[i]

python - 几个列表 - 列表理解来计算方程

python - 在 Pandas 列表中提取列表

python - Python 中的 DBSCAN : Unexpected result

python - 如何使用相关系数矩阵进行聚类?