西电模式识别k近邻.docx
- 文档编号:7968941
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:20
- 大小:21.29KB
西电模式识别k近邻.docx
《西电模式识别k近邻.docx》由会员分享,可在线阅读,更多相关《西电模式识别k近邻.docx(20页珍藏版)》请在冰豆网上搜索。
西电模式识别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的使用方法。
为以后的学习打下了基础。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模式识别 近邻