0

可能重复:
一维数数组聚类

我有一个数字数组,例如[1, 20, 300, 45, 5, 60, 10, 270, 3]. 什么是基于接近度将这些数字分组在一起的有效算法?在这种情况下,我希望像[1, 3, 5],[20, 45, 60][270, 300]

4

2 回答 2

4

您所问的最难的部分是如何实际定义接近度。您希望输出来自[5,10,15,20]什么?会是与 for 相同的分组[500,1000,1500,2000]吗?

怎么样[1,2,3,5,7,8,9]?应该是一组还是三组?(或两个?)。
怎么样[1,2,3,5,7,8,9,1075,4000]?1075 和 4000 会组合在一起吗?较小数字的分组是否会因样本中的较大数字而改变?

这个问题是整个机器学习领域都在问的问题:聚类分析 也许这个相关的问题会有所帮助?

我认为您想要的是K-means 聚类(在相关问题中有助于链接到),但您需要知道要将数据分成多少组才能使用它。

于 2012-12-29T00:02:03.863 回答
3

这可能是大材小用,但您可能想研究层次聚类算法。这些算法将值组合成一个层次结构,您可以从中轻松提取最佳的 k 个集群。凝聚聚类可能是这些方法中最容易实现的,并且根据经验,它往往会产生非常好的聚类。

希望这可以帮助!

于 2012-12-28T23:51:50.757 回答