K-Means聚类算法及实现代码

K-Means聚类算法及实现代码

ID:40557797

大小:36.00 KB

页数:4页

时间:2019-08-04

K-Means聚类算法及实现代码_第1页
K-Means聚类算法及实现代码_第2页
K-Means聚类算法及实现代码_第3页
K-Means聚类算法及实现代码_第4页
资源描述:

《K-Means聚类算法及实现代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、K-Means算法k-means算法接受参数k;然后将事先输入的n个数据对象划分为k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。假设要把样本集分为c个类别,算法描述如下:(1)适当选择c个类的初始中心;(2)在第k次迭代中,对任意一个样本,求其到c个中心的距离,将该样本归到距离最短的中心所在的类;(3)利用均值等方法更新该类的中心值;(4)对于所有的c个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变,则迭代结束,否则

2、继续迭代。#include#include#include#define_NUM3//预定义划分簇的数目usingnamespacestd;/**特征对象,表示一个元组,一个元组有两个数值属性**/structTuple{intattr1;intattr2;};/**获取两个特征对象之间的距离,在此以欧基米德距离作为距离度量标准**/doublegetDistXY(Tuplet1,Tuplet2){returnsqrt((t1.attr1-t2.attr1)*(t1.attr1-t2.attr1)+(

3、t1.attr2-t2.attr2)*(t1.attr2-t2.attr2));}/**计算簇的中心点,在此以簇中所有对象的平均距离来计算中心点**/TuplegetMeansC(vectorc){intnum=c.size();doublemeansX=0,meansY=0;Tuplet;for(inti=0;i

4、数收敛时算法停止**/doublegetE(vectorclasses[],Tuplemeans[]){doublesum=0;for(inti=0;i<_NUM;i++){vectorv=classes[i];for(intj=0;j

5、

6、ans[i].attr1)+(t.attr2-means[i].attr2)*(t.attr2-means[i].attr2);if(tempinit){vectorclasses[_NUM];//定义簇数组,共需划分_NUM个簇intc;Tuplemeans[_NUM];//定义中心点数组,每个簇对应一个中心点doublenewE,oldE=-1;//定义准则函数值for(inti=0;i<_NUM;i++)

7、//对每个簇初始赋予一个特征对象{cin>>c;classes[i].push_back(init[c-1]);means[i]=getMeansC(classes[i]);//计算当前每个簇的中心点cout<<"means["<

8、i].clear();}while(abs(newE-oldE)>=1)//当新旧函数值相差不

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。