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. 提分策略:数据采样方法最全总结!
  2. 接口入参形式_某小公司RESTful、共用接口、前后端分离、接口约定的实践
  3. python第三方库下载-python 第三方库下载
  4. 【Android开发经验】android:windowSoftInputMode属性具体解释
  5. ML之DT:基于DT决策树算法(交叉验证FS+for遍历最佳FS)对Titanic(泰坦尼克号)数据集进行二分类预测
  6. IOS安装CocoaPods完整流程
  7. Qt中视图的缩放对应缩略图中矩形框的缩放
  8. 如何在Timeline中使用Cinemachine?
  9. 第二课 了解编程环境
  10. HP惠普打印机双面打印及常规操作
  11. 苹果屏蔽更新描述文件_安装iOS屏蔽更新描述文件教程方法
  12. 关于while循环终止循环的三种方式
  13. CTF新手抓包找flag
  14. 【MineCraft】-- 学习我的世界Mod制作引雷附魔书与事件
  15. 广东专升本C语言程序设计(完结)
  16. MySQL 使用 Workbench 建表时 PK NN UQ BIN UN ZF AI G 的含义
  17. 最新Visual Studio的安装与使用 - 工作负荷选择 c语言 | 手把手基础教学
  18. Codemeter安装器遇到了一个错误,导致安装失败,请联系软件制造商以获得帮助
  19. Python之JSON库的使用(二)
  20. 关于社交电商系统的起源、发展历史和类型

热门文章

  1. L1-013.计算阶乘和
  2. Data - 大数据生态圈
  3. Pomelo:网易开源基于 Node.js 的游戏服务端框架
  4. 实现DRBD的简单配置
  5. [开源][J2ME]J2ME手机应用程序UI开发框架
  6. php 自己封装一个调用第三方接口的函数
  7. 深入浅出TensorFlow(二):TensorFlow解决MNIST问题入门
  8. poj2635 同余定理 + 素数筛法
  9. XMLHelper 辅助类
  10. iOS平台软件开发工具(一)-新建的工程使用CocoaPods工具集成第三方框架