新手,有问题的地方请大家指教

训练集的数据有属性和标签

同类即同标签的数据在属性值方面一定具有某种相似的地方,用距离来描述这种相似的程度

k=1或则较小值的话,分类对于特殊数据或者是噪点就会异常敏感,容易将测试的数据分成和特殊数据一类或者分成和错误数据一类

k值很大的话,对于在训练集中占比很大的数据对这个未知数据的分类贡献会比一般数据大,存在以全概篇,容易分错

《机器学习实战》书上说的是K值是不大于20的书,我也听老师说K要取奇数,我想的话,是防止两个类别在位置数据的邻域内的占比相等,无法正确分类,所以要取奇数

看过某位大牛的博客,kNN(K-临近算法)取K个里面的占比最大的标签的原因是根据计算错误率得出来的:

图片来源:  作者:Treant  出处:http://www.cnblogs.com/en-heng/
其中k是kNN的k,即未知数据的邻域大小k值,Cj是预测值(类别,标签),(Xi,Yi)Xi是属性值,Yi是数据标签(类别),I(judge)=1(judge成立,否则=0)
这个概率计算式表示的时候,错误率才最小

所以分类表达式

大K表示k邻域内不同标签的个数,用I(judge)函数来表示标签出现,做累计计算占比,出现最多的那个标签就是未知数据的分类标签。

kNN-临近算法,就是在未知数据的k邻域里面,找到最有可能是这个未知数据标签的标签。在k值取值合理的情况下,在距离未知数据较近的数据中,某个类别出现的次数越多,那么这个未知数据是这个类别的可能性就越高,这个假设也是建立在它的错误率表达式上面的。

《机器学习实战》书上用字典来计算标签次数的,将标签记为key,dict.get(key,0)+1当dict[key]没有的时候,默认返回0+1,出现一次,将key加入dict并且赋值,否则的话就直接+1,增加一次出现的次数。书上对距离的大小是点算的,将标签值看成是多维坐标上的点,计算点的距离作为数据间属性的相似度

计算邻域距离的方式有很多,没有具体看

初学,大家一起讨论

kNN算法个人理解的更多相关文章

  1. KNN算法的理解

    一.算法 1.kNN算法又称为k近邻分类(k-nearest neighbor classification)算法. 最简单平庸的分类器或许是那种死记硬背式的分类器,记住全部的训练数据.对于新的数据则 ...

  2. 菜鸟之路——机器学习之KNN算法个人理解及Python实现

    KNN(K Nearest Neighbor) 还是先记几个关键公式 距离:一般用Euclidean distance   E(x,y)√∑(xi-yi)2 .名字这么高大上,就是初中学的两点间的距离 ...

  3. KNN算法理解

    一.算法概述 1.kNN算法又称为k近邻分类(k-nearest neighbor classification)算法. 最简单平庸的分类器或许是那种死记硬背式的分类器,记住全部的训练数据,对于新的数 ...

  4. 理解KNN算法中的k值-knn算法中的k到底指的是什么 ?

    2019-11-09 20:11:26为方便自己收藏学习,转载博文from:https://blog.csdn.net/llhwx/article/details/102652798 knn算法是指对 ...

  5. 【Machine Learning】KNN算法虹膜图片识别

    K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  6. 机器学习笔记--KNN算法1

    前言 Hello ,everyone. 我是小花.大四毕业,留在学校有点事情,就在这里和大家吹吹我们的狐朋狗友算法---KNN算法,为什么叫狐朋狗友算法呢,在这里我先卖个关子,且听我慢慢道来. 一 K ...

  7. KNN算法的补充

    文本自动分类技术是文字管理的基础.通过快速.准确的文本自动分类,可以节省大量的人力财力:提高工作效率:让用户快速获得所需资源,改善用户体验.本文着重对KNN文本分类算法进行介绍并提出改进方法. 一.相 ...

  8. KNN算法--物以类聚,人以群分

    KNN(K Nearest Neighbors,K近邻 )算法是机器学习所有算法中理论最简单,最好理解的.KNN是一种基于实例的学习,通过计算新数据与训练数据特征值之间的距离,然后选取K(K>= ...

  9. KNN算法介绍

    KNN算法全名为k-Nearest Neighbor,就是K最近邻的意思. 算法描述 KNN是一种分类算法,其基本思想是采用测量不同特征值之间的距离方法进行分类. 算法过程如下: 1.准备样本数据集( ...

随机推荐

  1. Spring IOC以及三种注入方式

    IOC是spring的最基础部分,也是核心模块,Spring的其他组件模块和应用开发都是以它为基础的.IOC把spring的面向接口编程和松耦合的思想体现的淋漓尽致. IOC概念 IOC(Invers ...

  2. Linked List Cycle && Linked List Cycle II

    Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Note ...

  3. Asp.net MVC 视图使用像Ajax,ViewBag提示为找到上下文

    不知是什么原因,所有的视图中Ajax,ViewBag之类的都提示为找到上下文(由于换了个版本Vs,猜测应该是Vs的原因),然后顺利在网上找到了解决方案. 给地址链接:https://social.ms ...

  4. 【树莓派】iptables相关配置

    关于iptables的配置,参见官方资料:http://wiki.ubuntu.org.cn/IptablesHowTo 最好. 进入iptables # sudo iptables -L 列出目前的 ...

  5. iOS开发之数据存储之Preference(偏好设置)

    1.概述 很多iOS应用都支持偏好设置,比如保存用户名.密码.字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能. 每个应用都有个NSUserDefaults实例,通过它来存取偏好 ...

  6. CentOS 下安装 Node npm pm2

    1.node安装 参考:http://blog.csdn.net/haidaochen/article/details/7257655 下载,你需要在https://nodejs.org/en/dow ...

  7. 走入PHP-变量、运算符

    通过define()定义常量: PHP 5.3.0之后,可以使用const关键字在类定义之外定义常量: 下面是PHP的几个魔术变量: PHP支持一个执行运算符:反引号(``),PHP将尝试将反引号中的 ...

  8. 模式识别与机器学习—bagging与boosting

    声明:本文用到的代码均来自于PRTools(http://www.prtools.org)模式识别工具箱,并以matlab软件进行实验. (1)在介绍Bagging和Boosting算法之前,首先要简 ...

  9. Arduino String.h库函数详解

    此库中包含 1 charAT() 2 compareTo() 3 concat() 4 endsWith() 5 equals() 6 equalslgnoreCase() 7 getBytes() ...

  10. 性能测试分享:MYSQL死锁

    poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-845052 ...