关闭

最近邻(NNC)

标签: 算法NNCmatlab模式识别
399人阅读 评论(0) 收藏 举报
分类:

最近邻算法的基本思路

  1. 已知NX
  2. 输入未知类别的样本x
  3. 计算xxiX,(i=1,2,N)di(x);
  4. 找到最小距离dm(x)=min{di(x)};
  5. 判断xm属于哪一类
  6. 确定出未知样本所属的类

Matlab代码实现

clear all;
close all;
clc;

%X为标记好的样本集,样本为将1至100的数分为4类
%1-10里的5个随机数为一类,30-40里的5个随机数为一类,60-70里的5个随机数为一类,90-100里的5个随机数为一类.
%N = 20,总样本数
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];

%x为未知样本
T = [1:10 31:40 61:70 91:100];%选取类的范围里的随机序列,共40个数
R=randperm(40);%将1至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));%显示最小距离,以及所在位置

%判断随机数x属于的类别
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

效果图

5
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:10696次
    • 积分:247
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:1篇
    • 译文:0篇
    • 评论:2条
    最新评论