function [Testclass,precision,px_y]=knn_zxl(k,train,train_class,test,test_class)
%Input:
%k : 选择的近邻数
%ks :样本类别数
%train : 训练样本集,不带标签
%train_class : 训练样本的类别
%test : 测试样本集
%test_class
%Output:
%Testclass
%
%=====获得训练样本和测试样本的个数
%k=11;
[m,n]=size(train);
[m1,n1]=size(test);
%======调用的是Manifold Regularization
distance=euclidean(test',train');%求欧氏距离的平方
[disttemp,index]=sort(distance,2);
%====找出最近的k个样本
neighbor=index(:,1:k);
Ncout=zeros(11,2);%第二列存放类别,第一列存放近邻在每一类别的个数
for class=1:11
Ncout(class,2)=class;
end
for i=1:m1
for count=1:k
switch train_class(neighbor(i,count))
case 1
Ncout(1,1)=Ncout(1,1)+1;
case 2
Ncout(2,1)=Ncout(2,1)+1;
case 3
Ncout(3,1)=Ncout(3,1)+1;
case 4
Ncout(4,1)=Ncout(4,1)+1;
case 5
Ncout(5,1)=Ncout(5,1)+1;
case 6
Ncout(6,1)=Ncout(6,1)+1;
case 7
Ncout(7,1)=Ncout(7,1)+1;
case 8
Ncout(8,1)=Ncout(8,1)+1;
case 9
Ncout(9,1)=Ncout(9,1)+1;
case 10
Ncout(10,1)=Ncout(10,1)+1;
case 11
Ncout(11,1)=Ncout(11,1)+1;
end
end
px_y1(i,1) = Ncout(1,1)/11;
px_y2(i,1) = Ncout(2,1)/11;
px_y3(i,1) = Ncout(3,1)/11;
Ncoutsort=sortrows(Ncout); %对各个类别所占的个数进行排序,升序
Testclass1(i)=Ncoutsort(11,2); %选择数量最大的那个的标签作为最终预测标签
Ncout(:,1)=0;
end
%}
%{
%================专门为了数字分类设计===========================
Ncout=zeros(10,2);%第二列存放类别,第一列存放近邻在每一类别的个数
for class=1:10
Ncout(class,2)=class-1;
end
for i=1:m1
for count=1:k
switch train_class(neighbor(i,count))
case 0
Ncout(1,1)=Ncout(1,1)+1;
case 1
Ncout(2,1)=Ncout(2,1)+1;
case 2
Ncout(3,1)=Ncout(3,1)+1;
case 3
Ncout(4,1)=Ncout(4,1)+1;
case 4
Ncout(5,1)=Ncout(5,1)+1;
case 5
Ncout(6,1)=Ncout(6,1)+1;
case 6
Ncout(7,1)=Ncout(7,1)+1;
case 7
Ncout(8,1)=Ncout(8,1)+1;
case 8
Ncout(9,1)=Ncout(9,1)+1;
case 9
Ncout(10,1)=Ncout(10,1)+1;
end
end
Ncoutsort=sortrows(Ncout); %对各个类别所占的个数进行排序,升序
Testclass(i)=Ncoutsort(10,2); %选择数量最大的那个的标签作为最终预测标签
Ncout(:,1)=0;
end
%}
%==============计算正确率===========
num=0;
for i=1:m1
if test_class(i)==Testclass1(i)
num=num+1;
end
end
precision=num/m1;
Testclass=Testclass1';
px_y = [px_y1 px_y2 px_y3];
%>>>>>>>>>>>>>>>>>>>>complete<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- 1
- 2
- 3
- 4
- 5
- 6
前往页