我想把下面一些数据进行分类,要求尽量把互相之间距离很近的数归为一类, 当然了,这个“互相之间的距离”是可以控制的参数。 例如,有下面这些数字: 3, 5, 7, 11, 12, 32, 45, 46, 49, 88 如果设定距离为5的话,应该分为5类: 3,5,7 11,12 32, 45,46,49 88 进一步,有两种方法对分类进行优化: 1)按最小距离优化。找出“相互之间距离”的最小值,以实现每个分类中数据之间都很临近,但是类的数量可能很多。 2)按最小分类个数优化。即分出的类尽量少,但是数据之间的距离可能增大。 这只是在一维空间上的分类,比这个复杂的是对平面(或高维空间)中的向量进行分组, 不过我目前只需要在一维上分类,有没有简化的高效算法? 我知道很多海友大虾是数量分析和算法的高手, 向各位请教一下什么样的算法可以比较高效的完成这种分类。 MATLAB里面有没有对于的现成算法? 先谢啦!!!
我在这里不是要讨论这种做法是否overkill或者其合理性,而是希望得到一些具体实现上的建议。 toneyson, 谢谢你提到的cluster,我昨天晚上也在网上找到一些这方面的信息,先看一下,估计目前最简单的方法就是用二维上的算法,y值都取0就可以了。需要实验一下...
jevinlee,你的这个方法不错!!我就是不想搞得太复杂,杀鸡用牛刀地调用matlab,所以才跑到这里问一下,海洋部落里面的能人多啊 toneyson, 我找到了clustering一个比较普遍的算法:K-means clustering,有现成的matlab代码,matlab的stats toolbox里面也有一个对应的函数。还有快速的K-means算法。不过好像还是jevinlee的方法比较直接,甚至都不用matlab。我打算有空都试一下。