最近邻算法的基本思路
- 已知
N个已知类别的样本X
;
- 输入未知类别的样本
x
;
- 计算x到xi∈X,(i=1,2,⋅⋅⋅,N)的距离di(x);
- 找到最小距离
dm(x)=min{di(x)}
;
- 判断
xm
属于哪一类
- 确定出未知样本所属的类
Matlab代码实现
clear all;
close all;
clc;
X = [7,10,1,5,4,36,33,37,35,38,60,68,62,66,64,98,90,96,99,94];
[r,c] = size(X);
w1 = [7,10,1,5,4];
w2 = [36,33,37,35,38];
w3 = [60,68,62,66,64];
w4 = [98,90,96,99,94];
T = [1:10 31:40 61:70 91:100];
R=randperm(40);
x =T(R(1));
disp('随机数x为:');
disp(num2str(x));
d = zeros(r,c);
for i = 1:c
d(i) = X(i)-x;
end
[dmin ,m] = min(abs(d));
if (m <= 5) && (m >= 1)
disp( '随机数x属于w1类:');
disp( num2str(w1));
break;
elseif (m <= 10) && (m >= 6)
disp( '随机数x属于w2类:');
disp( num2str(w2));
break;
elseif (m <= 15) && (m >= 11)
disp( '随机数x属于w3类:');
disp( num2str(w3));
break;
elseif (m <= 20) && (m >= 16)
disp( '随机数x属于w4类:');
disp( num2str(w4));
break;
end
效果图