-
K值的选择与问题域相关,通常用户需选择若干个k值实验,从而得到最佳分类的数目。
-
由于初始化时对簇均值的选择是随机的,即使对于同一个k值,最终聚类结果一般来说也是不相同的,并且很可能导致最终结果得到的不是k个聚类。为了减少这种情况的发生,我在程序中加入了简单的处理方法:每进行一轮数据对象指派,便检查是否有空簇,随机选取一个数据对象作为空簇的新的均值。
-
传说对脏数据很敏感,但是我不知道如何验证。
k-means聚类分析的C++实现
原创
©著作权归作者所有:来自51CTO博客作者小罗啦啦的原创作品,请联系作者获取转载授权,否则将追究法律责任
K-means即为1967年MacQueen首次提出的K均值聚类算法,在许多实践应用中取得了很好的效果,下面对k-means算法做简要介绍。
设数据集由n个对象组成,预备分成k类,初始化时,从n个数据对象 中随机选取k个作为簇的初始均值,对剩余数据对象,计算其与各个簇均值的距离,从而将其指派到最相似的簇。指派完毕后,重新计算各个簇的均值,并对各个数据对象重新进行指派。如此重复直至准则函数式(所有数据对象与所在簇的均值的差的平方相加)收敛。
此种聚类方法的缺陷:
总之,这种聚类方法比较适合对大量数据做初步聚类,一般来说聚类结果可以采用多次执行聚类分析后较稳定的结果,也就是出现次数较多的那个聚类结果。
而对于我的程序(附件里下载源码)本身,命名还是不规范(总是忧愁取啥名),代码还不够简洁,我努力改,愿下次贴代码的时候有很大的进步,也欢迎各位批判。
附件下载解压后,在VS下新建一个项目,然后在相应位置添加相应文件后编译执行。
下一篇:我错了……
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【模式识别】实验三:K均值算法和模糊C均值算法
本文主要介绍K-means和FCM聚类算法的区别与应用
均值算法 机器学习 python 聚类 迭代