最近邻法和k-近邻法 学号:02105120 姓名:吴林 一
基本概念: 最近邻法:对于未知样本x,比较x 与N 个已知类别的样本之间的欧式距离,并决策x 与距离它最近的样本同类
K 近邻法:取未知样本x 的k 个近邻,看这 k 个近邻中多数属于哪一类,就把 x 归为哪一类
K 取奇数,为了是避免 k1=k2 的情况
问题分析: 要判别x 属于哪一类,关键要求得与x 最近的k 个样本(当 k=1 时,即是最近邻法),然后判别这 k 个样本的多数属于哪一类
可采用欧式距离公式求得两个样本间的距离s=sqrt((x1-x2)^2+(y1-y2)^2) 三
算法分析: 该算法中任取每类样本的一半作为训练样本,其余作为测试样本
例如 iris 中取每类样本的25 组作为训练样本,剩余 25 组作为测试样本,依次求得与一测试样本x 距离最近的k个样本,并判断 k 个样本多数属于哪一类,则 x 就属于哪类
测试 10 次,取 10 次分类正确率的平均值来检验算法的性能
MATLAB 代码: 最近邻算实现对Iris 分类 clc; totalsum=0; for ii=1:10 data=load('iris
txt'); data1=data(1:50,1:4);%任取 Iris-setosa 数据的25 组 rbow1=randperm(50); trainsample1=data1(rbow1(:,1:25),1:4); rbow1(:,26:50)=sort(rbow1(:,26:50));%剩余的25 组按行下标大小顺序排列 testsample1=data1(rbow1(:,26:50),1:4); data2=data(51:100,1:4);%任取 Iris-versicolor 数据的25 组 rbow2=randperm(50);