可能重复:
一维数数组聚类
我有一个数字数组,例如[1, 20, 300, 45, 5, 60, 10, 270, 3]
. 什么是基于接近度将这些数字分组在一起的有效算法?在这种情况下,我希望像[1, 3, 5]
,[20, 45, 60]
和[270, 300]
。
可能重复:
一维数数组聚类
我有一个数字数组,例如[1, 20, 300, 45, 5, 60, 10, 270, 3]
. 什么是基于接近度将这些数字分组在一起的有效算法?在这种情况下,我希望像[1, 3, 5]
,[20, 45, 60]
和[270, 300]
。
您所问的最难的部分是如何实际定义接近度。您希望输出来自[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 聚类(在相关问题中有助于链接到),但您需要知道要将数据分成多少组才能使用它。
这可能是大材小用,但您可能想研究层次聚类算法。这些算法将值组合成一个层次结构,您可以从中轻松提取最佳的 k 个集群。凝聚聚类可能是这些方法中最容易实现的,并且根据经验,它往往会产生非常好的聚类。
希望这可以帮助!