可能的重复:
1D数阵列群集
我有一个像 [1, 20, 300, 45, 5, 60, 10, 270, 3]
这样的数字。根据接近度将这些数字分组在一起的有效算法是什么?在这种情况下,我期望像[1, 3, 5]
,[20, 45, 60]
和[270, 300]
。
您问的最难的部分是如何实际定义接近度。您期望来自[5,10,15,20]
的输出是什么?这会与[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簇。聚集聚类可能是这些实施方法中最容易的一种,并且从经验中倾向于产生非常好的群集。
希望这会有所帮助!