最近邻(NNC)

原创 2016年06月01日 21:02:49

最近邻算法的基本思路

  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

效果图

版权声明:本文为博主原创文章,未经博主允许不得转载。如有疑问,欢迎打扰。

相关文章推荐

机器学习算法-K最近邻从原理到实现(Python)

引文:决策树和基于规则的分类器都是积极学习方法(eager learner)的例子,因为一旦训练数据可用,他们就开始学习从输入属性到类标号的映射模型。一个相反的策略是推迟对训练数据的建模,直到需要分类...

距离平均最近邻分类器 iris

  • 2010年03月16日 17:14
  • 2KB
  • 下载

ML:Scikit-Learn 学习笔记(3) --- Nearest Neighbors 最近邻 回归及相关算法

1 最近邻回归最近邻回归是用在标签值是连续取值的场景智商的,而不是离散取值,而是用最近邻回归进行查询的点,最后得到的结果是其所有最近邻居的平均值。scikit-learn 在回归部分,同样实现了两种回...
  • MebiuW
  • MebiuW
  • 2016年04月13日 22:16
  • 2355

反向最近邻查询算法资料

  • 2009年08月23日 23:39
  • 6.28MB
  • 下载

NFL最近邻tezhengxian

  • 2015年03月09日 14:20
  • 204B
  • 下载

机器学习十大经典算法—KNN(最近邻)

机器学习十大经典算法—KNN(最近邻) K-近邻算法原理K最近邻(kNN,k-NearestNeighbor)分类算法,见名思意:找到最近的k个邻居(样本),在前k个样本中选择频率最高的类别作为预测类...

最近邻kNN-python3源码和数据

  • 2017年08月22日 16:12
  • 786KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:最近邻(NNC)
举报原因:
原因补充:

(最多只允许输入30个字)