模式识别——C均值算法.docx

模式识别——C均值算法.docx

ID:37991921

大小:73.08 KB

页数:5页

时间:2019-05-23

模式识别——C均值算法.docx_第1页
模式识别——C均值算法.docx_第2页
模式识别——C均值算法.docx_第3页
模式识别——C均值算法.docx_第4页
模式识别——C均值算法.docx_第5页
资源描述:

《模式识别——C均值算法.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、模式识别作业C均值算法姓名:班级:学号:二零一一年十二月C均值算法一、算法描述:C均值算法的基础是误差平方和准则。若Ni是第i聚类Γi中的样本数目,mi是这些样本的均值,即:mi=1Niy∈Γiy把Γi中的各个样本y与均值mi间的误差平方和对所有的类相加后为:Je=i=1cy∈Γi

2、

3、y-mi

4、

5、2Je是误差平方和聚类准则,它是样本集Y和类别集Ω的函数。二、C均值算法基本流程:1、选择把N个样本分成C个聚类的初始划分,计算每个聚类的均值m1,m2,…,mc和Je。2、选择一个备选样本y,设y现在在Γi中。3、若Ni=1,

6、则转2,否则继续4、计算pj=NjNj+1

7、

8、y-mj

9、

10、2j≠iNiNi-1

11、

12、y-mi

13、

14、2j=i5、对于所有的j,若pk<=pj,则把y从Γi移到Γk中去。6、重新计算mi和mk值,并修改Je。7、连续迭代N次Je不改变,则停止,否则转到2。三、实验结果实验结果得到iris样本C聚类的结果:第一类正确率为0.92000,第二类聚类的正确率为0.50000,第三类样本的正确率为0.44000。总体的准确率为0.62000。四、程序源代码#include#includestructdi

15、stance{floatd;intn;}dist[3];voidsort(structdistance*b){inti,j;structdistancetemp;for(i=0;i<=1;i++){for(j=i+1;j<=2;j++){if(b[j].d

16、ntf("第三类的聚类正确率为%f",c/50.0);printf("总体正确率为%f",(a+b+c)/150.0);}voidmain(){inti,j,c1=0,c2=0,c3=0;floatg[3][4],dat[150][6];FILE*fp;if((fp=fopen("Data.txt","r"))==NULL)printf("error!");for(i=0;i<150;i++){for(j=0;j<6;j++)fscanf(fp,"%f",&dat[i][j]);}fclose(fp);g[0

17、][0]=4.9;g[0][1]=3.0;g[0][2]=1.4;g[0][3]=0.2;g[1][0]=6.4;g[1][1]=3.2;g[1][2]=4.5;g[1][3]=1.5;g[2][0]=5.8;g[2][1]=2.7;g[2][2]=5.1;g[2][3]=1.9;//聚类中心初始化,每一类的取一组样本值for(j=0;j<150;j++){for(i=0;i<3;i++){dist[i].d=sqrt(pow(dat[j][1]-g[i][0],2)+pow(dat[j][2]-g[i][1],2)+p

18、ow(dat[j][3]-g[i][2],2)+pow(dat[j][4]-g[i][3],2));dist[i].n=i+1;}sort(dist);switch(dist[0].n){case1:{g[0][0]=(dat[j][1]+g[0][0])/2;g[0][1]=(dat[j][2]+g[0][1])/2;g[0][2]=(dat[j][3]+g[0][2])/2;g[0][3]=(dat[j][4]+g[0][3])/2;printf("第%d个样本属于第%d类n",j,dist[0].n);if(j>3

19、&&j<50)c1++;}break;case2:{g[1][0]=(dat[j][1]+g[1][0])/2;g[1][1]=(dat[j][2]+g[1][1])/2;g[1][2]=(dat[j][3]+g[1][2])/2;g[1][3]=(dat[j][4]+g[1][3])/2;printf("第%d个样本属于第%d类",j,dist[0].n);if(j>49&&j<100)c2++;}break;case3:{g[2][0]=(dat[j][1]+g[2][0])/2;g[2][1]=(dat[j][

20、2]+g[2][1])/2;g[2][2]=(dat[j][3]+g[2][2])/2;g[2][3]=(dat[j][4]+g[2][3])/2;printf("第%d个样本属于第%d类",j,dist[0].n);if(j>99&&j<150)c3++;}break;}}rate(c1,c2,c3);}

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

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

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