您好,欢迎访问三七文档
实验一用身高和/或体重数据进行性别分类的实验一、实验目的1)加深对k-近邻法原理的理解和认识2)掌握k-近邻法的设计方法二、实验数据训练样本集FAMALE.TXT50个女生的身高、体重数据MALE.TXT50个男生的身高、体重数据测试样本集test1.txt35个同学的身高、体重、性别数据(15个女生、20个男生)test2.txt300个同学的身高、体重、性别数据(50个女生、250个男生)三、实验内容同时采用身高和体重数据作为特征,用压缩k-近邻法进行分类,考察训练和测试错误情况。将训练样本和求得的决策边界画到图上,同时把以往用Bayes方法求得的分类器也画到图上,比较结果的异同。四、原理简述、程序流程图1、K-近邻法原理给定一个训练数据集,确定样本特征。对新的输入实例,在训练数据集中根据样本特征找到与该实例最邻近的K个实例,这K个实例的多数属于某个类,就把该输入实例分类到这个类中。2、流程图五、实验结果及分析1、判别结果表格K值35791113读取样本选取实例n计算每个样本与实例距离读取测试集排列距离,选取前k个确定k值并设n=1判断前k个样本中男女数量根据多数将实例归类n++错误个数353024272932错误率11.67%10.00%8.00%9.00%9.67%10.67注:使用测试集test2.txt2、分析根据表格,当K取7时有最佳判别结果,此时错误个数最少,错误率最低。与Bayes分类器比较,当K值越来越大时,结果与Bayes分类器会渐渐接近。但是,在此次试验中,当均为最佳错误率时,K近邻法要优于Bayes分类器六、附录[a1,a2]=textread('FEMALE.txt','%f%f');[b1,b2]=textread('MALE.txt','%f%f');fid=fopen('test2.txt','r');test1=fscanf(fid,'%f%f%c',[3,inf]);TEST=test1';m=ones(50,1);n=zeros(50,1);GIRL=[a1,a2,m];%女生1BOY=[b1,b2,n];%男生0COMBINE=[GIRL;BOY];error_num=0;%错误个数error_rate=0;%错误率k=13;%手动k值forq=1:300boy_num=0;%男生个数girl_num=0;%女生个数forp=1:100d(p,1)=sqrt((TEST(q,1)-COMBINE(p,1))^2+(TEST(q,2)-COMBINE(p,2))^2);endDISTENCE=[COMBINE,d];temp=sortrows(DISTENCE,4);%按照距离排序fori=1:kiftemp(i,3)==1girl_num=girl_num+1;endiftemp(i,3)==0boy_num=boy_num+1;endendifgirl_numboy_numsex='M';elsesex='F';endifsex~=TEST(q,3)error_num=error_num+1;endenda=error_num/300;error_rate=vpa(a)error_num
本文标题:K-n近邻分类算法
链接地址:https://www.777doc.com/doc-5440234 .html