KNN是指通过测量不同特征值之间的距离进行分类。

1、它的本质是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别,其中K通常是不大于20的整数。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。

例如:下图中,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?

如果K=3,由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,如果K=5,由于蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类。

因此,KNN算法的结果很大程度取决于K的选择。

2、在KNN中,将样本间距离作为各个样本之间的非相似性指标,较长使用的距离是欧氏距离或曼哈顿距离,公式这个理不赘述。

3、现在总结一下KNN算法的思想:

在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的样本与训练集中对应的样本进行相互比较,找到训练集中与之最为相似的前K个数据,则该测试数据对应的类别就是K个数据中出现次数最多的那个分类,其算法的描述为:

1)计算测试数据与各个训练数据之间的距离;

2)按照距离的递增关系进行排序;

3)选取距离最小的K个点;

4)确定前K个点所在类别的出现频率;

5)返回前K个点中出现频率最高的类别作为测试数据的预测分类。

4、MATLAB代码实现:----这里为了使用方便,直接写成函数的形式。

function relustLabel = KNN(inx,data,k)

%% 寻找k个邻居

% inx为输入测试数据,data为样本数据,k:k个邻居

[datarow , ~] = size(data); % 获取数据的行数

diffMat = repmat(inx,[datarow,1]) - data ; %在列上重复inx共1次,在行上重复inx共datarow次

distanceMat = sqrt(sum(diffMat.^2,2)); %特征平方,按行累加,开根号计算距离

[B,IX] = sort(distanceMat,'ascend'); % 排序,IX为排序后备元素在原矩阵中的行位置或列位置的索引,B是排列后的数据

a = [];

a =IX(1:k);

relustLabel = IX(1:k);

end

matlab repmat_利用MATLAB实现KNN相关推荐

  1. Matlab:利用Matlab编程实现模拟分子布朗运动的动画展示

    Matlab:利用Matlab编程实现模拟分子布朗运动的动画展示 目录 输出结果 实现代码 输出结果 实现代码 %Brownian motion clf; n=20; s=0.02; x = rand ...

  2. Matlab:利用Matlab实现布朗运动模拟

    Matlab:利用Matlab实现布朗运动模拟 目录 输出结果 实现代码 输出结果 实现代码 n=40 s=0.04 x=rand(n,1)-0.5; y=rand(n,1)-0.5; h=plot( ...

  3. 环形网络潮流计算matlab,利用matlab编程计算任意环形网络牛拉法潮流计算程序

    环形网络潮流计算matlab,利用matlab编程计算任意环形网络牛拉法潮流计算程序,程序通用性强,通过修改参数可以得到任意节点和网络的环形网络牛拉法潮流计算. YID:696064261479453 ...

  4. 幅度调制信号 matlab,《利用MATLAB实现信号的幅度调制与解调.doc

    <利用MATLAB实现信号的幅度调制与解调 课程设计论文 姓名:姜勇 学院:机电与车辆工程学院 专业:电子信息工程2班 学号:1665090208 安徽科技学院 学年第 学期 < > ...

  5. 坎蒂雷赋权法 matlab,干货 | 利用MATLAB实现FMCW雷达中的常用角度估计方法

    其中在介绍角度估计中,通过对接收差频信号在快慢时间维度的扩展,增加了空域的信息.扩展后的接收差频信号可以表示为 其中k表示接收天线的个数,d为天线间距. 在"干货|利用MATLAB实现FMC ...

  6. matlab text黑体,MATLAB论文利用MATLAB研究黑体辐射规律.doc

    PAGE PAGE 1<MATLAB语言>课程论文利用MATLAB研究黑体辐射规律姓名:陈清源 学号:12010245332 专业:电子信息工程 班级:2010级1班指导老师:汤全武 学院 ...

  7. matlab rawdata,利用 Matlab 和 Dcraw 处理数码相机 Raw 文件的完整流程 _ Capbone.pdf

    利用 Matlab 和 Dcraw 处理数码相机 Raw 文件的完整流程 _ Capbone 2015/10/20 利用 Matlab 和 Dcraw 处理数码相机 Raw 文件的完整流程 | Cap ...

  8. 用matlab能带图,利用Matlab绘制Materials studio能带图

    [原创]利用Matlab绘制Materials studio能带图 作者: xianggui7895(站内联系TA)收录: 2011-04-06 发布: 2011-03-30 Materials St ...

  9. matlab复数向极坐标转换_[matlab 极坐标]利用MATLAB函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换。谁能写出函数和调用语句?...

    利用MATLAB函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换.谁能写出函数和调用语句? 问题补充:利用MATLAB函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换.谁能写出 ...

最新文章

  1. 开课吧 Python专家级编程:机制与实操
  2. python中set函数是什么数据类型_阿博Python之路-详解Set数据类型
  3. Navisworks Api Tool
  4. [Java基础]泛型基础
  5. 绝对定位和浮动的区别和运用
  6. idea springboot热部署无效问题
  7. linux系统下定时备份,在Linux系统中简单地实现定时备份的方法 -电脑资料
  8. 工作流activiti5 使用流程变量
  9. 记某次CTF中Let me in
  10. 图像处理八:前向映射和后向映射
  11. Jenkins build light on Windows, with Blinky
  12. 158、如何分辨出一台PoE交换机是否标准PoE供电
  13. 二维码签到,签退和登陆
  14. 数据标注:图像镜像(水平镜像;垂直镜像;对角镜像)
  15. 判断字符串是否是对称字符串
  16. IDEA设置中文/更改页面/IDEA字体大小颜色设置/IDEA注释取消斜体
  17. 标准库简介—C++学习
  18. 合并两个 Wav 文件流的函数 - 回复 刘文强 的问题
  19. 抖音死亡计算机在线测,抖音死亡计算器怎么玩?抖音死亡计算器测试入口
  20. 亲测,解决windows通过ssh访问ubantu失败的问题

热门文章

  1. 实验一 分治与递归—整数划分 java实现
  2. const char*p,char const*p,char *const p
  3. IPSec L2L ××× 之 Router-to-ASA
  4. 共享美食:煲仔饭、香蕉粥和胡萝卜饼
  5. Python核心编程第二版 第十三章课后答案
  6. 位带操作全解释,个人觉得不错就转过来理解下
  7. tp5命令行基础介绍
  8. python实现括号分组
  9. Python模块之optparse
  10. 唯品会高级副总裁 唐倚智:电商精细化运营