算法简介:
K-近邻法(KNN)是一种简单而有效的分类算法,也可用于回归问题。它的基本原理是根据待分类样本与训练样本的距离,选取最近的K个样本进行投票决定分类。该算法无需训练过程,而是利用训练数据集直接进行预测。KNN算法简单易懂,对于非线性问题有很好的适应性,但对于大型数据集计算量较大。在MATLAB中,可以使用fitcknn
函数来训练KNN分类模型,使用predict
函数对新样本进行预测。
部分代码:
x=randn(1,2);%待判样本
hold on,plot(x(1),x(2),'m+','MarkerSize',10,'LineWidth',2)
for i=1:2*Ndist(i)=norm(x-X(i,:));
end
[Sdist,index]=sort(dist,'ascend');
K=5; %近邻数目
for i=1:Khold on,plot(X(index(i),1),X(index(i),2),'ko');
end
legend('Cluster 1','Cluster 2','x','Location','NW')
flag1=0;flag2=0;
for i=1:Kif ceil(index(i)/N)==1flag1=flag1+1;elseif ceil(index(i)/N)==2flag2=flag2+1;end
end
disp(strcat('K近邻中包含',num2str(flag1),'个第一类样本'));
disp(strcat('K近邻中包含',num2str(flag2),'个第二类样本'));
if flag1>flag2disp('判断待判样本属于第一类');
elsedisp('判断待判样本属于第二类');
end