课程设计——模式识别大作业.pdf
模式识别大作业模式识别大作业题题目:目:K-K-近邻法、近邻法、c c 均值、模糊均值、模糊的算法与编程的算法与编程姓名:章苗苗学院:电子工程学院系:电子工程学院专业:智能科学与技术年级:2009 级学号:02095058老师:张向荣c c 均值法均值法一、K-近邻法:#include#include#include#define k 7/函数调用声明void RESULT(double A6,double study6,double test7);void rand1(double A6,double study6);void randt1(double A6,double test7);void rand2(double A6,double study6);void randd2(double A6,double test7);void rand3(double A6,double study6);void randd3(double A6,double test7);void rand4(double A6,double study6);void randd4(double A6,double test7);void rand5(double A6,double study6);void randd5(double A6,double test7);void SEARCH(double A,int low,int high);void OUTPUT(double test7,FILE*fp);double MAX(double t1,double t2,double t3);double distance(int i,int j,double sample6,double test7);/主程序:void main()char s100;double A1506;int i,j;double study606;/学习样本double test907;/测试样本FILE*fp;if(fp=fopen(Iris.txt,r)=NULL)printf(cannot open file n);exit(0);fgets(s,100,fp);fgets(s,100,fp);fgets(s,100,fp);for(i=0;i150;i+)for(j=0;j6;j+)fscanf(fp,%lf,&Aij);/读取样本集存入 Afclose(fp);fp=fopen(Classification Outputs(k=7).doc,w);/建立“分类结果(k=5).doc”文档存放分类结果fprintf(fp,nThe first output:n);rand1(A,study);/初始化数组 studyrandt1(A,test);/初始化数组 testRESULT(A,study,test);/RESULT 聚类OUTPUT(test,fp);/输出聚类结果并计算正确率fprintf(fp,nThe second output:n);rand2(A,study);randd2(A,test);RESULT(A,study,test);OUTPUT(test,fp);fprintf(fp,nThe third output:n);rand3(A,study);randd3(A,test);RESULT(A,study,test);OUTPUT(test,fp);fprintf(fp,The fourth output:n);rand4(A,study);randd4(A,test);RESULT(A,study,test);OUTPUT(test,fp);fprintf(fp,The fifth output:n);rand5(A,study);randd5(A,test);RESULT(A,study,test);OUTPUT(test,fp);fclose(fp);/K 近邻算法得到分类结果:void RESULT(double A6,double study6,double test7)int i,j,t;double u;double t1,t2,t3;double temp60;double mk;double D9060;for(i=0;i90;i+)for(j=0;j60;j+)Dij=distance(i,j,study,test);for(i=0;i90;i+)t1=0;t2=0;t3=0;for(j=0;j60;j+)tempj=Dij;SEARCH(temp,0,59);for(t=0;tk;t+)for(j=0;j60;j+)if(tempt=Dij)mt=j;for(t=0;tk;t+)if(study(int)mt5=1.0)t1+;else if(study(int)mt5=2.0)t2+;else t3+;u=MAX(t1,t2,t3);testi6=u;/初始化样本集及测试集:void rand1(double A6,double study6)int i,j;for(i=0;i20;i+)for(j=0;j6;j+)studyij=Aij;studyi+20j=Ai+50j;studyi+40j=Ai+100j;void randt1(double A6,double test7)int i,j;for(i=20;i50;i+)for(j=0;j6;j+)testi-20j=Aij;testi+10j=Ai+50j;testi+40j=Ai+100j;void rand2(double A6,double study6)int i,j;for(i=10;i30;i+)for(j=0;j6;j+)studyi-10j=Aij;studyi+10j=Ai+50j;studyi+30j=Ai+100j;void randd2(double A6,double test7)int i,j;for(i=0;i10;i+)for(j=0;j6;j+)testij=Aij;testi+10j=Ai+50j;testi+20j=Ai+100j;for(i=30;i50;i+)for(j=0;j6;j+)testij=Aij;testi+20j=Ai+30j;testi+40j=Ai+60j;void rand3(double A6,double study6)int i,j;for(i=20;i40;i+)for(j=0;j6;j+)studyi-20j=Aij;studyij=Ai+50j;studyi+20j=Ai+100j;void randd3(double A6,double test7)int i,j;for(i=0;i20;i+)for(j=0;j6;j+)testij=Aij;testi+20j=Ai+50j;testi+40j=Ai+100j;for(i=40;i50;i+)for(j=0;j6;j+)testi+20j=Aij;testi+30j=Ai+50j;testi+40j=Ai+100j;void rand4(double A6,double study6)int i,j;for(i=30;i50;i+)for(j=0;j6;j+)studyi-30j=Aij;studyi-10j=Ai+50j;studyi+10j=Ai+100j;void randd4(double A6,double test7)int i,j;for(i=0;i30;i+)for(j=0;j6;j+)testij=Aij;testi+30j=Ai+50j;testi+60j=Ai+100j;void rand5(double A6,double study6)int i,j;for(i=0;i10;i+)for(j=0;j6;j+)studyij=Aij;studyi+10j=Ai+40j;studyi+20j=Ai+50j;studyi+30j=Ai+90j;studyi+40j=Ai+100j;studyi+50j=Ai+140j;void randd5(double A6,double test7)int i,j;for(i=10;i40;i+)for(j=0;j6;j+)testi-10j=Aij;testi+20j=Ai+50j;testi+50j=Ai+100j;/搜索检验位置样本 x 的最近邻是否存在:void SEARCH(double A,int low,int high)int i=low;int j=high;double pivot=Alow;while(ij)while(i=pivot)j-;Ai=Aj;while(ij&Ai=pivot)i+;Aj=Ai;Ai=pivot;if(lowi+1)SEARCH(A,i+1,high);/结果输出聚类结果及正确率:void OUTPUT(double test7,FILE*fp)int i,j,n=0;for(i=0;i90;i+)for(j=0;j7;j+)fprintf(fp,%lf,testij);fprintf(fp,n);for(i=0;i=t2&t1=t3)return 1;else if(t2=t3&t2=t1)return 2;else return 3;/求距离函数double distance(int i,int j,double sample6,double test7)int m;double s=0;for(m=1;m4;m+)s+=pow(testim-samplejm,2);s=sqrt(s);return s;附:k=7 时归类结果The first result:21.000000 5.400000 3.400000 1.700000 0.200000 1.000000 1.00000022.000000 5.100000 3.700000 1.500000 0.400000 1.000000 1.00000023.000000 4.600000 3.600000 1.000000 0.200000 1.000000 1.00000024.000000 5.100000 3.300000 1.700000 0.500000 1.000000 1.00000025.000000 4.800000 3.400000 1.900000 0.200000 1.000000 1.00000026.000000 5.000000 3.000000 1.600000 0.200000 1.000000 1.00000027.000000 5.000000 3.400000 1.600000 0.400000 1.000000 1.00000028.000000 5.200000 3.500000 1.500000 0.200000 1.000000 1.00000029.000000 5.200000 3.400000 1.400000 0.200000 1.000000 1.00000030.000000 4.700000 3.200000 1.600000 0.200000 1.000000 1.00000031.000000 4.800000 3.100000 1.600000 0.200000 1.000000 1.00000032.000000 5.400000 3.400000 1.500000 0.400000 1.000000 1.00000033.000000 5.200000 4.100000 1.500000 0.100000 1.000000 1.00000034.000000 5.500000 4.200000 1.400000 0.200000 1.000000 1.00000035.000000 4.900000 3.100000 1.500000 0.200000 1.000000 1.00000036.000000 5.000000 3.200000 1.200000 0.200000 1.000000 1.00000037.000000 5.500000 3.500000 1.300000 0.200000 1.000000 1.00000038.000000 4.900000 3.600000 1.400000 0.100000 1.000000 1.00000039.000000 4.400000 3.000000 1.300000 0.200000 1.000000 1.00000040.000000 5.100000 3.400000 1.500000 0.200000 1.000000 1.00000041.000000 5.000000 3.500000 1.300000 0.300000 1.000000 1.00000042.000000 4.500000 2.300000 1.300000 0.300000 1.000000 1.00000043.000000 4.400000 3.200000 1.300000 0.200000 1.000000 1.00000044.000000 5.000000 3.500000 1.600000 0.600000 1.000000 1.00000045.000000 5.100000 3.800000 1.900000 0.400000 1.000000 1.00000046.000000 4.800000 3.000000 1.400000 0.300000 1.000000 1.00000047.000000 5.100000 3.800000 1.600000 0.200000 1.000000 1.00000048.000000 4.600000 3.200000 1.400000 0.200000 1.000000 1.00000049.000000 5.300000 3.700000 1.500000 0.200000 1.000000 1.00000050.000000 5.000000 3.300000 1.400000 0.200000 1.000000 1.00000071.000000 5.900000 3.200000 4.800000 1.800000 2.000000 2.00000072.000000 6.100000 2.800000 4.000000 1.300000 2.000000 2.00000073.000000 6.300000 2.500000 4.900000 1.500000 2.000000 2.00000074.000000 6.100000 2.800000 4.700000 1.200000 2.000000 2.00000075.000000 6.400000 2.900000 4.300000 1.300000 2.000000 2.00000076.000000 6.600000 3.000000 4.400000 1.400000 2.000000 2.00000077.000000 6.800000 2.800000 4.800000 1.400000 2.000000 2.00000078.000000 6.700000 3.000000 5.000000 1.700000 2.000000 3.00000079.000000 6.000000 2.900000 4.500000 1.500000 2.000000 2.00000080.000000 5.700000 2.600000 3.500000 1.000000 2.000000 2.00000081.000000 5.500000 2.400000 3.800000 1.100000 2.000000 2.00000082.000000 5.500000 2.400000 3.700000 1.000000 2.000000 2.00000083.000000 5.800000 2.700000 3.900000 1.200000 2.000000 2.00000084.000000 6.000000 2.700000 5.100000 1.600000 2.000000 3.00000085.000000 5.400000 3.000000 4.500000 1.500000 2.000000 2.00000086.000000 6.000000 3.400000 4.500000 1.600000 2.000000 2.00000087.000000 6.700000 3.100000 4.700000 1.500000 2.000000 2.00000088.000000 6.300000 2.300000 4.400000 1.300000 2.000000 2.00000089.000000 5.600000 3.000000 4.100000 1.300000 2.000000 2.00000090.000000 5.500000 2.500000 4.000000 1.300000 2.000000 2.00000091.000000 5.500000 2.600000 4.400000 1.200000 2.000000 2.00000092.000000 6.100000 3.000000 4.600000 1.400000 2.000000 2.00000093.000000 5.800000 2.600000 4.000000 1.200000 2.000000 2.00000094.000000 5.000000 2.300000 3.300000 1.000000 2.000000 2.00000095.000000 5.600000 2.700000 4.200000 1.300000 2.000000 2.00000096.000000 5.700000 3.000000 4.200000 1.200000 2.000000 2.00000097.000000 5.700000 2.900000 4.200000 1.300000 2.000000 2.00000098.000000 6.200000 2.900000 4.300000 1.300000 2.000000 2.00000099.000000 5.100000 2.500000 3.000000 1.100000 2.000000 2.000000100.000000 5.700000 2.800000 4.100000 1.300000 2.000000 2.000000121.000000 6.900000 3.200000 5.700000 2.300000 3.000000 3.000000122.000000 5.600000 2.800000 4.900000 2.000000 3.000000 3.000000123.000000 7.700000 2.800000 6.700000 2.000000 3.000000 3.000000124.000000 6.300000 2.700000 4.900000 1.800000 3.000000 3.000000125.000000 6.700000 3.300000 5.700000 2.100000 3.000000 3.000000126.000000 7.200000 3.200000 6.000000 1.800000 3.000000 3.000000127.000000 6.200000 2.800000 4.800000 1.800000 3.000000 2.000000128.000000 6.100000 3.000000 4.900000 1.800000 3.000000 3.000000129.000000 6.400000 2.800000 5.600000 2.100000 3.000000 3.000000130.000000 7.200000 3.000000 5.800000 1.600000 3.000000 3.000000131.000000 7.400000 2.800000 6.100000 1.900000 3.000000 3.000000132.000000 7.900000 3.800000 6.400000 2.000000 3.000000 3.000000133.000000 6.400000 2.800000 5.600000 2.200000 3.000000 3.000000134.000000 6.300000 2.800000 5.100000 1.500000 3.000000 3.000000135.000000 6.100000 2.600000 5.600000 1.400000 3.000000 3.000000136.000000 7.700000 3.000000 6.100000 2.300000 3.000000 3.000000137.000000 6.300000 3.400000 5.600000 2.400000 3.000000 3.000000138.000000 6.400000 3.100000 5.500000 1.800000 3.000000 3.000000139.000000 6.000000 3.000000 4.800000 1.800000 3.000000 2.000000140.000000 6.900000 3.100000 5.400000 2.100000 3.000000 3.000000141.000000 6.700000 3.100000 5.600000 2.400000 3.000000 3.000000142.000000 6.900000 3.100000 5.100000 2.300000 3.000000 3.000000143.000000 5.800000 2.700000 5.100000 1.900000 3.000000 3.000000144.000000 6.800000 3.200000 5.900000 2.300000 3.000000 3.000000145.000000 6.700000 3.300000 5.700000 2.500000 3.000000 3.000000146.000000 6.700000 3.000000 5.200000 2.300000 3.000000 3.000000147.000000 6.300000 2.500000 5.000000 1.900000 3.000000 3.000000148.000000 6.500000 3.000000 5.200000 2.000000 3.000000 3.000000149.000000 6.200000 3.400000 5.400000 2.300000 3.000000 3.000000150.000000 5.900000 3.000000 5.100000 1.800000 3.000000 3.000000正确率 0.955556The second result:1.000000 5.100000 3.500000 1.400000 0.200000 1.000000 1.0000002.000000 4.900000 3.000000 1.400000 0.200000 1.000000 1.0000003.000000 4.700000 3.200000 1.300000 0.200000 1.000000 1.0000004.000000 4.600000 3.100000 1.500000 0.200000 1.000000 1.0000005.000000 5.000000 3.600000 1.400000 0.200000 1.000000 1.0000006.000000 5.400000 3.900000 1.700000 0.400000 1.000000 1.0000007.000000 4.600000 3.400000 1.400000 0.300000 1.000000 1.0000008.000000 5.000000 3.400000 1.500000 0.200000 1.000000 1.0000009.000000 4.400000 2.900000 1.400000 0.200000 1.000000 1.00000010.000000 4.900000 3.100000 1.500000 0.100000 1.000000 1.00000051.000000 7.000000 3.200000 4.700000 1.400000 2.000000 2.00000052.000000 6.400000 3.200000 4.500000 1.500000 2.000000 2.00000053.000000 6.900000 3.100000 4.900000 1.500000 2.000000 2.00000054.000000 5.500000 2.300000 4.000000 1.300000 2.000000 2.00000055.000000 6.500000 2.800000 4.600000 1.500000 2.000000 2.00000056.000000 5.700000 2.800000 4.500000 1.300000 2.000000 2.00000057.000000 6.300000 3.300000 4.700000 1.600000 2.000000 2.00000058.000000 4.900000 2.400000 3.300000 1.000000 2.000000 2.00000059.000000 6.600000 2.900000 4.600000 1.300000 2.000000 2.00000060.000000 5.200000 2.700000 3.900000 1.400000 2.000000 2.000000101.000000 6.300000 3.300000 6.000000 2.500000 3.000000 3.000000102.000000 5.800000 2.700000 5.100000 1.900000 3.000000 3.000000103.000000 7.100000 3.000000 5.900000 2.100000 3.000000 3.000000104.000000 6.300000 2.900000 5.600000 1.800000 3.000000 3.000000105.000000 6.500000 3.000000 5.800000 2.200000 3.000000 3.000000106.000000 7.600000 3.000000 6.600000 2.100000 3.000000 3.000000107.000000 4.900000 2.500000 4.500000 1.700000 3.000000 2.000000108.000000 7.300000 2.900000 6.300000 1.800000 3.000000 3.000000109.000000 6.700000 2.500000 5.800000 1.800000 3.000000 3.000000110.000000 7.200000 3.600000 6.100000 2.500000 3.000000 3.00000031.000000 4.800000 3.100000 1.600000 0.200000 1.000000 1.00000032.000000 5.400000 3.400000 1.500000 0.400000 1.000000 1.00000033.000000 5.200000 4.100000 1.500000 0.100000 1.000000 1.00000034.000000 5.500000 4.200000 1.400000 0.200000 1.000000 1.00000035.000000 4.900000 3.100000 1.500000 0.200000 1.000000 1.00000036.000000 5.000000 3.200000 1.200000 0.200000 1.000000 1.00000037.000000 5.500000 3.500000 1.300000 0.200000 1.000000 1.00000038.000000 4.900000 3.600000 1.400000 0.100000 1.000000 1.00000039.000000 4.400000 3.000000 1.300000 0.200000 1.000000 1.00000040.000000 5.100000 3.400000 1.500000 0.200000 1.000000 1.00000041.000000 5.000000 3.500000 1.300000 0.300000 1.000000 1.00000042.000000 4.500000 2.300000 1.300000 0.300000 1.000000 1.00000043.000000 4.400000 3.200000 1.300000 0.200000 1.000000 1.00000044.000000 5.000000 3.500000 1.600000 0.600000 1.000000 1.00000045.000000 5.100000 3.800000 1.900000 0.400000 1.000000 1.00000046.000000 4.800000 3.000000 1.400000 0.300000 1.000000 1.00000047.000000 5.100000 3.800000 1.600000 0.200000 1.000000 1.00000048.000000 4.600000 3.200000 1.400000 0.200000 1.000000 1.00000049.000000 5.300000 3.700000 1.500000 0.200000 1.000000 1.00000050.000000 5.000000 3.300000 1.400000 0.200000 1.000000 1.00000061.000000 5.000000 2.000000 3.500000 1.000000 2.000000 2.00000062.000000 5.900000 3.000000 4.200000 1.500000 2.000000 2.00000063.000000 6.000000 2.200000 4.000000 1.000000 2.000000 2.00000064.000000 6.100000 2.900000 4.700000 1.400000 2.000000 2.00000065.000000 5.600000 2.900000 3.600000 1.300000 2.000000 2.00000066.000000 6.700000 3.100000 4.400000 1.400000 2.000000 2.00000067.000000 5.600000 3.000000 4.500000 1.500000 2.000000 2.00000068.000000 5.800000 2.700000 4.100000 1.000000 2.000000 2.00000069.000000 6.200000 2.200000 4.500000 1.500000 2.000000 3.00000070.000000 5.600000 2.500000 3.900000 1.100000 2.000000 2.00000071.000000 5.900000 3.200000 4.800000 1.800000 2.000000 2.00000072.000000 6.100000 2.800000 4.000000 1.300000 2.000000 2.00000073.000000 6.300000 2.500000 4.900000 1.500000 2.000000 3.00000074.000000 6.100000 2.800000 4.700000 1.200000 2.000000 2.00000075.000000 6.400000 2.900000 4.300000 1.300000 2.000000 2.00000076.000000 6.600000 3.000000 4.400000 1.400000 2.000000 2.00000077.000000 6.800000 2.800000 4.800000 1.400000 2.000000 2.00000078.000000 6.700000 3.000000 5.000000 1.700000 2.000000 3.00000079.000000 6.000000 2.900000 4.500000 1.500000 2.000000 2.00000080.000000 5.700000 2.600000 3.500000 1.000000 2.000000 2.00000091.000000 5.500000 2.600000 4.400000 1.200000 2.000000 2.00000092.000000 6.100000 3.000000 4.600000 1.400000 2.000000 2.00000093.000000 5.800000 2.600000 4.000000 1.200000 2.000000 2.00000094.000000 5.000000 2.300000 3.300000 1.000000 2.000000 2.00000095.000000 5.600000 2.700000 4.200000 1.300000 2.000000 2.00000096.000000 5.700000 3.000000 4.200000 1.200000 2.000000 2.00000097.000000 5.700000 2.900000 4.200000 1.300000 2.000000 2.00000098.000000 6.200000 2.900000 4.300000 1.300000 2.000000 2.00000099.000000 5.100000 2.500000 3.000000 1.100000 2.000000 2.000000100.000000 5.700000 2.800000 4.100000 1.300000 2.000000 2.000000101.000000 6.300000 3.300000 6.000000 2.500000 3.000000 3.000000102.000000 5.800000 2.700000 5.100000 1.900000 3.000000 3.000000103.000000 7.100000 3.000000 5.9