%调入数据文件
load hw3;
%查看数据
whos;
m=500;
n=2;
%当k=1时分类结果total_error =50 right1 =497 right2 =477 right3 = 476
%当k=50时分类结果total_error =47 right1 =494 right2 =470 right3 = 489
%当k=10时分类结果total_error =39 right1 =495 right2 =477 right3 = 489
%当k=18,19,20时分类结果total_error =37 right1 =495 right2 =477 right3 = 491
%当k=16,17时分类结果total_error =35 right1 =495 right2 =479 right3 = 491
k=16;
sum11=distance(m,n,t1,c1,k);%计算出t1中的样本和c1样本的欧式距离最近的前k个值
sum12=distance(m,n,t1,c2,k); %计算出t1中的样本和c2样本的欧式距离最近的前k个值
sum13=distance(m,n,t1,c3,k); %计算出t1中的样本和c3样本的欧式距离最近的前k个值
sum21=distance(m,n,t2,c1,k); %计算出t2中的样本和c1样本的欧式距离最近的前k个值
sum22=distance(m,n,t2,c2,k); %计算出t2中的样本和c2样本的欧式距离最近的前k个值
sum23=distance(m,n,t2,c3,k); %计算出t2中的样本和c3样本的欧式距离最近的前k个值
sum31=distance(m,n,t3,c1,k); %计算出t3中的样本和c1样本的欧式距离最近的前k个值
sum32=distance(m,n,t3,c2,k); %计算出t3中的样本和c2样本的欧式距离最近的前k个值
sum33=distance(m,n,t3,c3,k); %计算出t3中的样本和c3样本的欧式距离最近的前k个值
type1=classfy(sum11,sum12,sum13,k);%对t1中的样本进行分类
type2=classfy(sum21,sum22,sum23,k);%对t2中的样本进行分类
type3=classfy(sum31,sum32,sum33,k);%对t3中的样本进行分类
right1=class_right(type1,1,m) %t1中正确分类的样本数
right2=class_right(type2,2,m) %t2中正确分类的样本数
right3=class_right(type3,3,m) %t3中正确分类的样本数
total_error=m*3-right1-right2-right3%总的分错样本数
%计算欧式距离(测试样本中的每个点距离每个训练样本的距离)
function [sum]=distance(m,n,test,c,k)
sum=zeros(m,m);
for i=1:1:m
end
%并且进行排序得到距离较短的k个点来
for i=1:1:m
end
function[right]=class_right(type,t,m)
right=0;
for i=1:1:m
end
%分类器,判断测试样本属于真实分类的数目
function [type]=classfy(sum1,sum2,sum3,k)
m=500;
min11=zeros(m,1);
min12=zeros(m,1);
min13=zeros(m,1);
type=zeros(m,1);
for i=1:1:m
end