西电模式识别k近邻.docx

上传人:b****5 文档编号:7968941 上传时间:2023-01-27 格式:DOCX 页数:20 大小:21.29KB
下载 相关 举报
西电模式识别k近邻.docx_第1页
第1页 / 共20页
西电模式识别k近邻.docx_第2页
第2页 / 共20页
西电模式识别k近邻.docx_第3页
第3页 / 共20页
西电模式识别k近邻.docx_第4页
第4页 / 共20页
西电模式识别k近邻.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

西电模式识别k近邻.docx

《西电模式识别k近邻.docx》由会员分享,可在线阅读,更多相关《西电模式识别k近邻.docx(20页珍藏版)》请在冰豆网上搜索。

西电模式识别k近邻.docx

西电模式识别k近邻

 

模式识别大作业

k-近邻算法

 

学院:

电子工程学院

班级:

学号:

姓名:

 

作业要求

1、作业内容

编程实现最近邻算法和k-近邻算法,在Iris(3类,每类50个样本,4维特征),wine数据集(3类,13维,共178个样本)上验证其性能。

2、算法描述

K近邻就是在N个样本中,找出x的K个近邻。

设这N个样本中,来自Wc类的样本有Nc个,若K1,K2,…Kc分别是K个近邻中属于W1,W2,…,Wc类的样本数,则我们可以定义判别函数为:

决策规则为:

则决策x∈

这就是K近邻的基本规则。

3、代码实现

Iris

functionk_jl=k_jl();

temp=importdata('iris.txt');

sum=zeros(1,10);

fori=1:

10

data1=temp(1:

50,1:

4);

randnum=randperm(size(data1,1));

train1=data1(randnum(1:

25),:

);

test1=data1(randnum(26:

50),:

);

data2=temp(51:

100,1:

4);

randnum=randperm(size(data2,1));

train2=data2(randnum(1:

25),:

);

test2=data2(randnum(26:

50),:

);

data3=temp(101:

150,1:

4);

randnum=randperm(size(data3,1));

train3=data3(randnum(1:

25),:

);

test3=data3(randnum(26:

50),:

);

train_sample=cat(1,train1,train2,train3);

test_sample=cat(1,test1,test2,test3);

k=11;

kjl=zeros(1,75);

forx=1:

75

fory=1:

75

result=sqrt((test_sample(x,1)-train_sample(y,1))^2+(test_sample(x,2)-train_sample(y,2))^2+(test_sample(x,3)-train_sample(y,3))^2+(test_sample(x,4)-train_sample(y,4))^2);

kjl(1,y)=result;

end

[B,Ind]=sort(kjl);

m1=0;

m2=0;

m3=0;

forn=1:

k

ifInd(1,n)<=20

m1=m1+1;

elseifInd(1,n)>20&&Ind(1,n)<=40

m2=m2+1;

else

m3=m3+1;

end

end

if(m1>=m2&&m1>=m3)m=1;

elseifm2>=m1&&m2>=m3m=2;

elsem=3;

end

ifx<=25

disp(sprintf('第%d组数据分类后为第%d类',x+25,m));

elseifx>25&&x<=50

disp(sprintf('第%d组数据分类后为第%d类',x+50,m));

elseifx>50&&x<=75

disp(sprintf('第%d组数据分类后为第%d类',x+75,m));

end

if(x<=25&&m==1)||(x>25&&x<=50&&m==2)||(x>50&&x<=75&&m==3)

sum(1,i)=sum(1,i)+1;

end

end

sum(1,i)=sum(1,i)/75;

disp(sprintf('分类正确率为%4.2f',sum(1,i)))

end

add=0;

forj=1:

10

disp(sprintf('第%d次分类正确率为%4.2f',j,sum(1,j)))

add=sum(1,j)+add;

end

disp(sprintf('平均分类正确率为%4.2f',add/10))

Wine

functionzx=zx();

temp=importdata('wine.txt');

sum=zeros(1,10);

fori=1:

10

data_1=temp(1:

58,1:

4);

randnum=randperm(size(data_1,1));

train_1=data_1(randnum(1:

29),:

);

test_1=data_1(randnum(30:

58),:

);

data_2=temp(59:

116,1:

4);

randnum=randperm(size(data_2,1));

train_2=data_2(randnum(1:

29),:

);

test_2=data_2(randnum(30:

58),:

);

data_3=temp(117:

174,1:

4);

randnum=randperm(size(data_3,1));

train_3=data_3(randnum(1:

29),:

);

test_3=data_3(randnum(30:

58),:

);

train_sample=cat(1,train_1,train_2,train_3);

test_sample=cat(1,test_1,test_2,test_3);

k=11;

kjl=zeros(1,87);

forx=1:

87

fory=1:

87

result=sqrt((test_sample(x,1)-train_sample(y,1))^2+(test_sample(x,2)-train_sample(y,2))^2+(test_sample(x,3)-train_sample(y,3))^2+(test_sample(x,4)-train_sample(y,4))^2);

kjl(1,y)=result;

end

[B,Ind]=sort(kjl);

m1=0;

m2=0;

m3=0;

forn=1:

k

ifInd(1,n)<=20

m1=m1+1;

elseifInd(1,n)>20&&Ind(1,n)<=40

m2=m2+1;

else

m3=m3+1;

end

end

if(m1>=m2&&m1>=m3)m=1;

elseifm2>=m1&&m2>=m3m=2;

elsem=3;

end

ifx<=29

disp(sprintf('第%d组数据分类后为第%d类',x+29,m));

elseifx>29&&x<=58

disp(sprintf('第%d组数据分类后为第%d类',x+58,m));

elseifx>58&&x<=87

disp(sprintf('第%d组数据分类后为第%d类',x+87,m));

end

if(x<=29&&m==1)||(x>29&&x<=58&&m==2)||(x>58&&x<=87&&m==3)

sum(1,i)=sum(1,i)+1;

end

end

sum(1,i)=sum(1,i)/87;

disp(sprintf('分类正确率为%4.2f',sum(1,i)))

end

add=0;

forj=1:

10

disp(sprintf('第%d次分类正确率为%4.2f',j,sum(1,j)))

add=sum(1,j)+add;

end

disp(sprintf('平均分类正确率为%4.2f',add/10))

4、运行结果

Iris

第26组数据分类后为第1类

第27组数据分类后为第2类

第28组数据分类后为第1类

第29组数据分类后为第1类

第30组数据分类后为第1类

第31组数据分类后为第1类

第32组数据分类后为第1类

第33组数据分类后为第1类

第34组数据分类后为第1类

第35组数据分类后为第1类

第36组数据分类后为第1类

第37组数据分类后为第1类

第38组数据分类后为第1类

第39组数据分类后为第1类

第40组数据分类后为第2类

第41组数据分类后为第1类

第42组数据分类后为第1类

第43组数据分类后为第1类

第44组数据分类后为第1类

第45组数据分类后为第1类

第46组数据分类后为第1类

第47组数据分类后为第1类

第48组数据分类后为第1类

第49组数据分类后为第1类

第50组数据分类后为第1类

第76组数据分类后为第2类

第77组数据分类后为第2类

第78组数据分类后为第3类

第79组数据分类后为第3类

第80组数据分类后为第2类

第81组数据分类后为第2类

第82组数据分类后为第2类

第83组数据分类后为第3类

第84组数据分类后为第3类

第85组数据分类后为第2类

第86组数据分类后为第2类

第87组数据分类后为第3类

第88组数据分类后为第2类

第89组数据分类后为第2类

第90组数据分类后为第3类

第91组数据分类后为第2类

第92组数据分类后为第3类

第93组数据分类后为第3类

第94组数据分类后为第3类

第95组数据分类后为第3类

第96组数据分类后为第3类

第97组数据分类后为第3类

第98组数据分类后为第2类

第99组数据分类后为第2类

第100组数据分类后为第3类

第126组数据分类后为第3类

第127组数据分类后为第3类

第128组数据分类后为第3类

第129组数据分类后为第3类

第130组数据分类后为第3类

第131组数据分类后为第3类

第132组数据分类后为第3类

第133组数据分类后为第3类

第134组数据分类后为第3类

第135组数据分类后为第3类

第136组数据分类后为第3类

第137组数据分类后为第3类

第138组数据分类后为第3类

第139组数据分类后为第3类

第140组数据分类后为第3类

第141组数据分类后为第3类

第142组数据分类后为第3类

第143组数据分类后为第3类

第144组数据分类后为第3类

第145组数据分类后为第3类

第146组数据分类后为第3类

第147组数据分类后为第3类

第148组数据分类后为第3类

第149组数据分类后为第3类

第150组数据分类后为第3类

分类正确率为0.96

第26组数据分类后为第1类

第27组数据分类后为第1类

第28组数据分类后为第1类

第29组数据分类后为第1类

第30组数据分类后为第1类

第31组数据分类后为第1类

第32组数据分类后为第1类

第33组数据分类后为第1类

第34组数据分类后为第1类

第35组数据分类后为第1类

第36组数据分类后为第1类

第37组数据分类后为第1类

第38组数据分类后为第1类

第39组数据分类后为第1类

第40组数据分类后为第1类

第41组数据分类后为第1类

第42组数据分类后为第1类

第43组数据分类后为第1类

第44组数据分类后为第1类

第45组数据分类后为第1类

第46组数据分类后为第1类

第47组数据分类后为第1类

第48组数据分类后为第1类

第49组数据分类后为第1类

第50组数据分类后为第1类

第76组数据分类后为第3类

第77组数据分类后为第3类

第78组数据分类后为第3类

第79组数据分类后为第2类

第80组数据分类后为第2类

第81组数据分类后为第2类

第82组数据分类后为第2类

第83组数据分类后为第2类

第84组数据分类后为第2类

第85组数据分类后为第3类

第86组数据分类后为第2类

第87组数据分类后为第3类

第88组数据分类后为第1类

第89组数据分类后为第2类

第90组数据分类后为第2类

第91组数据分类后为第2类

第92组数据分类后为第2类

第93组数据分类后为第3类

第94组数据分类后为第2类

第95组数据分类后为第3类

第96组数据分类后为第2类

第97组数据分类后为第3类

第98组数据分类后为第3类

第99组数据分类后为第2类

第100组数据分类后为第3类

第126组数据分类后为第3类

第127组数据分类后为第3类

第128组数据分类后为第3类

第129组数据分类后为第3类

第130组数据分类后为第3类

第131组数据分类后为第3类

第132组数据分类后为第3类

第133组数据分类后为第3类

第134组数据分类后为第3类

第135组数据分类后为第3类

第136组数据分类后为第3类

第137组数据分类后为第3类

第138组数据分类后为第3类

第139组数据分类后为第3类

第140组数据分类后为第3类

第141组数据分类后为第3类

第142组数据分类后为第3类

第143组数据分类后为第3类

第144组数据分类后为第3类

第145组数据分类后为第3类

第146组数据分类后为第3类

第147组数据分类后为第3类

第148组数据分类后为第3类

第149组数据分类后为第3类

第150组数据分类后为第3类

分类正确率为0.94667

.....

.....

 

Wine

第30组数据分类后为第1类

第31组数据分类后为第1类

第32组数据分类后为第1类

第33组数据分类后为第1类

第34组数据分类后为第1类

第35组数据分类后为第1类

第36组数据分类后为第1类

第37组数据分类后为第1类

第38组数据分类后为第1类

第39组数据分类后为第1类

第40组数据分类后为第1类

第41组数据分类后为第1类

第42组数据分类后为第1类

第43组数据分类后为第1类

第44组数据分类后为第1类

第45组数据分类后为第1类

第46组数据分类后为第1类

第47组数据分类后为第1类

第48组数据分类后为第1类

第49组数据分类后为第1类

第50组数据分类后为第1类

第51组数据分类后为第1类

第52组数据分类后为第1类

第53组数据分类后为第1类

第54组数据分类后为第1类

第55组数据分类后为第1类

第56组数据分类后为第1类

第57组数据分类后为第1类

第58组数据分类后为第1类

第88组数据分类后为第3类

第89组数据分类后为第3类

第90组数据分类后为第3类

第91组数据分类后为第3类

第92组数据分类后为第2类

第93组数据分类后为第3类

第94组数据分类后为第2类

第95组数据分类后为第1类

第96组数据分类后为第3类

第97组数据分类后为第3类

第98组数据分类后为第3类

第99组数据分类后为第3类

第100组数据分类后为第3类

 

第101组数据分类后为第3类

第102组数据分类后为第3类

第103组数据分类后为第3类

第104组数据分类后为第2类

第105组数据分类后为第3类

第106组数据分类后为第3类

第107组数据分类后为第2类

第108组数据分类后为第3类

第109组数据分类后为第3类

第110组数据分类后为第2类

第111组数据分类后为第2类

第112组数据分类后为第3类

第113组数据分类后为第3类

第114组数据分类后为第3类

第115组数据分类后为第3类

第116组数据分类后为第3类

第146组数据分类后为第3类

第147组数据分类后为第3类

第148组数据分类后为第3类

第149组数据分类后为第3类

第150组数据分类后为第3类

第151组数据分类后为第3类

第152组数据分类后为第3类

第153组数据分类后为第3类

第154组数据分类后为第3类

第155组数据分类后为第3类

第156组数据分类后为第3类

第157组数据分类后为第3类

第158组数据分类后为第3类

第159组数据分类后为第3类

第160组数据分类后为第3类

第161组数据分类后为第3类

第162组数据分类后为第3类

第163组数据分类后为第3类

第164组数据分类后为第3类

第165组数据分类后为第3类

第166组数据分类后为第3类

第167组数据分类后为第3类

第168组数据分类后为第3类

第169组数据分类后为第3类

第170组数据分类后为第3类

第171组数据分类后为第3类

第172组数据分类后为第3类

第173组数据分类后为第3类

第174组数据分类后为第2类

分类正确率为0.8764

第30组数据分类后为第1类

第31组数据分类后为第1类

第32组数据分类后为第2类

第33组数据分类后为第1类

第34组数据分类后为第1类

第35组数据分类后为第1类

第36组数据分类后为第1类

第37组数据分类后为第1类

第38组数据分类后为第1类

第39组数据分类后为第1类

第40组数据分类后为第1类

第41组数据分类后为第1类

第42组数据分类后为第1类

第43组数据分类后为第1类

第44组数据分类后为第1类

第45组数据分类后为第1类

第46组数据分类后为第1类

第47组数据分类后为第1类

第48组数据分类后为第1类

第49组数据分类后为第1类

第50组数据分类后为第1类

第51组数据分类后为第1类

第52组数据分类后为第1类

第53组数据分类后为第2类

第54组数据分类后为第1类

第55组数据分类后为第2类

第56组数据分类后为第1类

第57组数据分类后为第1类

第58组数据分类后为第1类

第88组数据分类后为第2类

第89组数据分类后为第3类

第90组数据分类后为第3类

第91组数据分类后为第1类

第92组数据分类后为第2类

第93组数据分类后为第3类

第94组数据分类后为第3类

第95组数据分类后为第3类

第96组数据分类后为第3类

第97组数据分类后为第2类

第98组数据分类后为第3类

第99组数据分类后为第3类

第100组数据分类后为第3类

第101组数据分类后为第3类

第102组数据分类后为第1类

第103组数据分类后为第3类

第104组数据分类后为第3类

第105组数据分类后为第3类

第106组数据分类后为第3类

第107组数据分类后为第3类

第108组数据分类后为第3类

第109组数据分类后为第3类

第110组数据分类后为第2类

第111组数据分类后为第3类

第112组数据分类后为第3类

第113组数据分类后为第3类

第114组数据分类后为第3类

第115组数据分类后为第3类

第116组数据分类后为第3类

第146组数据分类后为第2类

第147组数据分类后为第3类

第148组数据分类后为第2类

第149组数据分类后为第3类

第150组数据分类后为第3类

第151组数据分类后为第3类

第152组数据分类后为第3类

第153组数据分类后为第3类

第154组数据分类后为第3类

第155组数据分类后为第3类

第156组数据分类后为第3类

第157组数据分类后为第3类

第158组数据分类后为第3类

第159组数据分类后为第3类

第160组数据分类后为第3类

第161组数据分类后为第3类

第162组数据分类后为第3类

第163组数据分类后为第3类

第164组数据分类后为第3类

第165组数据分类后为第3类

第166组数据分类后为第3类

第167组数据分类后为第3类

第168组数据分类后为第3类

第169组数据分类后为第3类

第170组数据分类后为第3类

第171组数据分类后为第3类

第172组数据分类后为第3类

第173组数据分类后为第3类

第174组数据分类后为第3类

分类正确率为0.88764.

.....

.....

Iris

数据表格:

项目

总类正确率

第一类正确率

第二类正确率

第三类正确率

第1次实验

0.96

1

0.92

0.96

第2次实验

0.94667

1

0.88

0.96

第3次实验

0.96

1

0.92

0.96

第4次实验

0.94667

1

0.88

0.96

第5次实验

0.96333

1

0.94

0.96

第6次实验

0.96

1

0.96

0.92

第7次实验

0.93333

1

0.92

0.88

第8次实验

0.96

1

0.92

0.96

第9次实验

0.97333

1

1

0.96

第10次实验

0.98667

1

1

0.96

10次平均

0.96

1

0.936

0.944

Wine

数据表格:

k=7

项目

总类正确率

第一类正确率

第二类正确率

第三类正确率

第1次实验

0.8764

0.96667

0.86667

0.96667

第2次实验

0.88764

0.96667

0.76667

0.96667

第3次实验

0.8764

0.96667

0.9

0.96667

第4次实验

0.92135

1

0.83333

1

第5次实验

0.89888

0.96667

0.86667

0.96667

第6次实验

0.93258

1

0.9

1

第7次实验

0.92135

1

0.83333

1

第8次实验

0.8764

0.96667

0.86667

0.96667

第9次实验

0.88764

0.96667

0.86667

0.96667

第10次实验

0.91011

0.96667

0.9

0.96667

10次平均

0.89213

0.97667

0.85333

0.84483

 

5、作业收获

通过本次大作业,我对k近邻算法有了更充分的认识,熟悉了MATLAB的使用方法。

为以后的学习打下了基础。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1