|||
分类是时常遇到的问题,有时候分布上会有几个峰,这个时候分类就比较明确。但是更多的时候并不存在这样明显的特征,或者几个峰有重叠,要进行明确的区分就有借助某种规则,由计算机实现了。
一个最简单的方法就是k-means。基本想法就是先随机选定几个中心点(分成n组就选n个中心点),然后计算这些中心点到某点的距离,将此点归入距离最近的中心点所代表的组,完成所有点的计算后,在计算每组点的新的中心点(就是各组点的平均位置)。然后重复这个过程直到收敛。这个方法是非常明确的,实践当中几乎不会碰到不收敛的情况。但是这个方法也不保证能找到全局最优解。
在matlab中有直接可用的函数,用
[cidx,cmeans] = kmeans(data,2,'display','iter');
就可以把data数组分为2组,最终结果cidx存储了每个点对应的组号,cmeans存储了每个组最终的中心点。data数组可以是n*m数组,其中n是点的数量,m是空间的维数,即每个点有m个坐标值。
参考文献
http://cs229.stanford.edu/notes/cs229-notes7a.pdf
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-23 11:00
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社