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

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

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

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. OpenFlow硬件交换机制作及刷机教程

    1.目的 将普通路由器升级成为一台支持OpenFlow的交换机. 具体哪些路由器可以刷OpenFlow可以参考:OpenWRT:http://wiki.openwrt.org/toh/start#su ...

  2. Java集合学习笔记

      在Java中,我们经常听到Collections框架.Collection类以及Collections类.这三者名字相似,但是从概念上讲却是不同的.Collections框架泛指Java中用于存储 ...

  3. Struts2学习笔记②

    之前在跟着老师们做项目的时候经常会烦恼Struts.xml怎么配置,老师也没讲太清楚,都是说很简单,但是不懂的人就是太难了!哈哈,万事还是要靠自己的! struts.xml今天又看了几个小时的书,也跟 ...

  4. java properties 对list的支持

    经测试,原生的properties 对 list 不支持. 参考样例如下: id=1 id=2 具体代码如下: java.util.Properties prop = new Properties() ...

  5. 持续集成接口自动化-jmeter+ant+jenkins(一)

    ant 批量执行Jmeter 一.环境准备 1.JDK环境:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.A ...

  6. 【收集】sql查询统计,周,月,年

    昨天 select * from tb where datediff(day, 时间字段 ,getdate()) = 1 今天 select * from tb where datediff(day, ...

  7. Android 实现QQ第三方登录

    Android 实现QQ第三方登录 在项目中需要实现QQ第三方登录,经过一番努力算是写出来了,现在总结以下,以防以后遗忘,能帮到其他童鞋就更好了. 首先肯定是去下载SDK和DEMO http://wi ...

  8. mysql数据库开启慢查询日志

    修改配置文件 在配置文件my.ini中加上下面两句话 log-slow-queries = C:\xampp\mysql_slow_query.log long_query_time=3 第一句使用来 ...

  9. HTML标签自定义属性

    本文章转载至:http://www.cnblogs.com/luoyanli/archive/2012/10/17/2727886.html HTML标签可以自定义属性,但是我们要考虑其在IE.Fir ...

  10. 使用Docker容器来源码编译etcd

    背景 etcd是CoreOS公司开发的分布式键值对存储库.在Kubernetes中,我们需要使用etcd作为所有REST API对象的持久化存储. 不幸的是,在github的release中,Core ...