K-n近邻分类算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一用身高和/或体重数据进行性别分类的实验

一、实验目的

1) 加深对k-近邻法原理的理解和认识

2) 掌握k-近邻法的设计方法

二、实验数据

⏹训练样本集

●FAMALE.TXT 50个女生的身高、体重数据

●MALE.TXT 50个男生的身高、体重数据

⏹测试样本集

●test1.txt 35个同学的身高、体重、性别数据(15个女生、20个男生)

●test2.txt 300个同学的身高、体重、性别数据(50个女生、250个男生)

三、实验内容

同时采用身高和体重数据作为特征,用压缩k-近邻法进行分类,考察训练和测试错误情况。将训练样本和求得的决策边界画到图上,同时把以往用Bayes方法求得的分类器也画到图上,比较结果的异同。

四、原理简述、程序流程图

1、K-近邻法原理

给定一个训练数据集,确定样本特征。对新的输入实例,在训练数据集中根据样本特征找到与该实例最邻近的K个实例,这K个实例的多数属于某个类,就把该输入实例分类到这个类中。

2

五、实验结果及分析

1、判别结果表格

K值 3 5 7 9 11 13

错误个数35 30 24 27 29 32

错误率11.67% 10.00% 8.00% 9.00% 9.67% 10.67

注:使用测试集test2.txt

2、分析

根据表格,当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]; %女生 1

BOY = [b1,b2,n]; %男生 0

COMBINE = [GIRL;BOY];

error_num = 0; %错误个数

error_rate = 0; %错误率

k = 13; %手动k值

for q = 1:300

boy_num = 0; %男生个数

girl_num = 0; %女生个数

for p = 1:100

d(p,1) = sqrt((TEST(q,1)-COMBINE(p,1))^2+(TEST(q,2)-COMBINE(p,2))^2); end

DISTENCE = [COMBINE,d];

temp = sortrows(DISTENCE,4); %按照距离排序

for i = 1:k

if temp(i,3) == 1

girl_num = girl_num + 1;

end

if temp(i,3) == 0

boy_num = boy_num + 1;

end

end

if girl_num < boy_num

sex = 'M';

else

sex = 'F';

end

if sex ~= TEST(q,3)

error_num = error_num + 1;

end

end

a = error_num/300;

error_rate = vpa(a)

error_num

相关文档
最新文档