近邻法与剪辑近邻法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
云南大学数学与统计学实验教学中心
实验报告
一、实验目的
能根据给出的训练集与测试集,用近邻法,k近邻法与剪辑近邻法, 重复剪辑近邻法给出测试集的分类结果并分别计算其错误率。
二、实验内容
画出近邻法的程序框图,对给定的分别存放在文件“riply_trn.mat”和”riply_tst.mat”中的两类样本训练集250个测试集1000个,试用近邻法,k近邻法与剪辑近邻法, 重复剪辑近邻法给出测试集的分类结果并分别计算其错误率。
三、实验环境
Windows XP
Matlab6.5
四、实验过程
一、程序框图:
二、实验相关代码:
(1)最近邻法
%计算错误率函数
function [P]=ZQL_func(ys,yr)
load riply_tst;
yr=y;
n=size(ys,2);
t=0;
for i=1:n
if ys(i)-yr(i)==0
t=t+1;
end
end
P=1-t/n;
%最近邻函数文件
function [ypd]=ZJL_func(Xtr,ytr,Xts,yts)
[m1,n1]=size(Xtr);
[m2,n2]=size(Xts);
d=zeros(1,n1);
ypd=zeros(1,n2);
for i=1:n2
for j=1:n1
d(j)=(Xts(1,i)-Xtr(1,j))^2+(Xts(2,i)-Xtr(2,j))^2; %欧式距离end
min=d(1);
r=1;
for t=2:n1
if d(t)<=min
min=d(t); %计算最小距离(并保存下标值)
r=t;
end
end
ypd(i)=ytr(r);
end
%最近邻的m文件
load riply_trn;
Xtr=X;
ytr=y;
load riply_tst;
Xts=X;
yts=y;
[m,n]=size(Xts);
yp=zeros(1,n);
yp=ZJL_func(Xtr,ytr,Xts,yts);
p=ZQL_func(yp,yts)
(1)运行结果:
(注:由于分类结果数据过于庞大在此不列出,只将错误率给出)p =
0.1500
(2)k近邻法
% k近邻法函数文件
function [P]= KJL(k)
load riply_trn;
Xtr=X;
ytr=y;
[m1,n1]=size(Xtr);
load riply_tst;
Xts=X;
yts=y;
[m2,n2]=size(Xts);
d=zeros(1,n1);
ypd=zeros(1,n2);
for i=1:n2
for j=1:n1
d(j)=(Xts(1,i)-Xtr(1,j))^2+(Xts(2,i)-Xtr(2,j))^2;
end
a=0;
b=0;
for t=1:n1
for r=t:n1
if d(t)>=d(r)
a=d(t);
d(t)=d(r);
d(r)=a;
b=ytr(t);
ytr(t)=ytr(r); %对距离进行排序
ytr(r)=b;
end
end
end
p=0;
q=0;
for s=1:k
if ytr(s)==1
p=p+1;
else
q=q+1; %寻找最近的k个来判断类别end
end
if p>q
ypd(i)=1;
else
ypd(i)=2;
end
end
ZQL_func(ypd,yts)
%根据作图找使得错误率达到最小的k值
k=25:120;
k1=[44,54];
P2=KJL(k);
figure(1),plot(k,P2(:))
hold on
plot(k1,min(P2(:)),'*r')
hold off
得到图形如下:
从图中可看出当k值在43附近能使得错误率达到最小,约为0.079。(3)剪辑近邻法:
%剪辑法函数文件:
function [Xbz,ybz,n]=JJF_func(Xjs,yjs,Xxs,yxs)
[mj,nj]=size(Xjs);
[mx,nx]=size(Xxs);
d=zeros(1,nj);
k=1;
i=1;
r=0;
min=0;
n=0;
while k<=nx
for j=1:nj
d(j)=(Xxs(1,i)-Xjs(1,j))^2+(Xxs(2,i)-Xjs(2,j))^2;
end
min=d(1);
for t=2:nj
if d(t)<=min
min=d(t);
r=t;
end
end
if yxs(i)-yjs(r)==0
i=i+1;