程一舰

数据技术处

K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。KNN是通过测量不同特征值之间的距离进行分类。其基本思想可以用这样一句俗语来解释——“近朱者赤,近墨者黑”。

一、原理介绍K近邻的思路是如果一个样本在特征空间中的k个最邻近的样本中的大多数属于某一个类别,则该样本也划分为这个类别。通过下面的这张图就好理解了:如果要确定绿点属于哪个颜色(红色或者蓝色),要做的就是选出距离目标点距离最近的k个点,看这k个点的大多数颜色是什么颜色。当k取3的时候,我们可以看出距离最近的三个,分别是红色、红色、蓝色,因此得到目标点为红色。

二、算法步骤

K紧邻分类主要分为以下几个步骤:

1)计算测试数据与各个训练数据之间的距离;2)按照距离的递增关系进行排序;3)选取距离最小的K个点;4)确定前K个点所在类别的出现频率;5)返回前K个点中出现频率最高的类别作为测试数据的预测分类三、实例说明下面用一个经过改造了的Peter Harrington的《机器学习实战》中电影分类的例子(当然实际情况不可能这么简单)来说明该算法的用法。第一步:准备下电影分类数据集(电影名称与分类来自于优酷网;镜头数量则纯属虚构):上面数据集中序号1-12为已知的电影分类,分为喜剧片、动作片、爱情片三个种类,使用的特征值分别为搞笑镜头、打斗镜头、拥抱镜头的数量。那么来了一部新电影《唐人街探案》,它属于上述3个电影分类中的哪个类型?用KNN是怎么做的呢?首先,我们构建一个已分好类的数据集。对于一个规模巨大的数据集,显然数据库是更好的选择。这里为了方便验证,使用Python的字典dict构造数据集。第二步:计算一个新样本与数据集中所有数据的距离。这里的新样本就是:"唐人街探案": [23, 3, 17, "?片"]。欧式距离是一个非常简单又最常用的距离计算方法。其中x,y为2个样本,n为维度,xi,yi为x,y第i个维度上的特征值。如x为:"唐人街探案": [23, 3, 17, "?片"],y为:"伦敦陷落": [2, 3, 55, "动作片"],则两者之间的距离为:下面为求与数据集中所有数据的距离代码:第三步:按照距离大小进行递增排序。KNN.sort(key=lambda dis: dis[1])输出结果:第四步:选取距离最小的*k**个样本。*这里取k=5;KNN=KNN[:5]输出:[['我的特工爷爷', 17.49], ['美人鱼', 18.55], ['功夫熊猫3', 21.47], ['宝贝当家', 23.43], ['澳门风云3', 32.14]]第五步:确定前*k**个样本所在类别出现的频率,并输出出现频率最高的类别。*输出结果:[('喜剧片', 4), ('动作片', 1), ('爱情片', 0)]喜剧片四、总结

KNN算法是最简单有效的分类算法,简单且容易实现。当训练数据集很大时,需要大量的存储空间,而且需要计算待测样本和训练数据集中所有样本的距离,所以非常耗时。KNN对于随机分布的数据集分类效果较差,对于类内间距小,类间间距大的数据集分类效果好,而且对于边界不规则的数据效果好于线性分类器。KNN对于样本不均衡的数据效果不好,需要进行改进。改进的方法时对k个近邻数据赋予权重,比如距离测试样本越近,权重越大。KNN很耗时,时间复杂度为O(n),一般适用于样本数较少的数据集,当数据量大时,可以将数据以树的形式呈现,能提高速度,常用的有kd-tree和ball-tree。大数据平台将一如既往的为各种数据挖掘类应用提供算力支持,为我行金融科技发展打造坚持的大数据平台支撑。

数据挖掘算法_技术分享|大数据挖掘算法之KNNk近邻算法相关推荐

  1. 数据挖掘原理与算法_技术分享|大数据挖掘算法之FPGrowth算法

    程一舰 数据技术处 我们常说我们生活在信息时代,实际上,我们更多的还是生活在数据时代.因为从过去到现在累积了大量的数据,对数据的挖掘和分析也仅是从最近几年大数据和人工智能技术的发展而兴起.我们对现有数 ...

  2. 大表与大表join数据倾斜_技术分享|大数据技术初探之Spark数据倾斜调优

    侯亚南 数据技术处 支宸啸 数据技术处 在大数据计算中,我们可能会遇到一个很棘手的问题--数据倾斜,此时spark任务的性能会比预期要差很多:绝大多数task都很快执行完成,但个别task执行极慢或者 ...

  3. java生成sm4算法的对称密钥_技术分享丨这是一篇简单的小科普——什么是对称加密算法?(下)...

    原标题:技术分享丨这是一篇简单的小科普--什么是对称加密算法?(下) 大家好~我是贾正经,又到了干货满满的技术分享趴啦~ 上期我们讲解了对称加密算法的小知识,并介绍了国密算法中SM4算法的原理. 本期 ...

  4. 【推荐算法课程】CS246 大数据挖掘

    文章目录 一.课程介绍 二.作者介绍 三.具体章节 四.小结 一.课程介绍 重点~课程对应教材(pdf可下载):http://www.mmds.org/ CS246主题包括: 频繁项集和关联规则,高维 ...

  5. cart算法_机器学习十大算法之一——决策树CART算法

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第23篇文章,我们今天分享的内容是十大数据挖掘算法之一的CART算法. CART算法全称是Classification ...

  6. 【华为云技术分享】深度理解AI概念、算法及如何进行AI项目开发

    莫衷一是的AI 做了多年的业务工作,一直希望能够用机器代替人力,把人从繁琐的具体工作中解放出来,从技术发展看AI或许可以支撑实现这个愿景. 但最近关于AI的讨论和争论比较多,学术上,纽约大学的Gary ...

  7. java有趣的技术分享ppt,java面试数据结构与算法高频考

    前言 本文涵盖了阿里巴巴.腾讯.字节跳动.京东.华为等大厂的Java面试真题,不管你是要面试大厂还是普通的互联网公司,这些面试题对你肯定是有帮助的,毕竟大厂一定是行业的发展方向标杆,很多公司的面试官同 ...

  8. ++代码实现 模糊综合算法_干货 | 十大经典排序算法最强总结(内含代码实现)...

    一.算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序. 非比较类排序:不通过比较来决定元 ...

  9. 关联规则挖掘算法_关联规则的挖掘与应用——Apriori和CBA算法

    文|光大科技大数据部  魏乐 卢格润 1  关联规则 1.1 关联规则基本概念 1.2 Apriori算法基本思路 2  关联分类 2.1  CBA关联分类算法思路 2.2  CBA算法实现 总结 关 ...

最新文章

  1. 由于授权协议中的一个错误,远程计算机中断了会话
  2. sql server行级锁,排它锁,共享锁的使用
  3. 一次授权测试引起的全域名沦陷
  4. 推荐 15 款常用开发工具
  5. C++ primer记录
  6. GIS二次开发之初探
  7. linux 深度v15,[转载]深度Linux发布 V15.9
  8. 【转】matlab练习程序(奇异值分解压缩图像)
  9. c语言非法字符空格,98行的四则计算器.(支持括号)加入了非法字符的检测
  10. Python的list方法append和extend有什么区别?
  11. HTML5新增元素之Canvas-实现太极八卦图和扇子
  12. YII 利用Clip构建layout
  13. php变成基础答案,高校邦《PHP语言程序设计》答案教程2020优学院《读写教程(基础篇) —— 成功之路大学英语综合教...
  14. 深度学习将灰度图着色_使用DeOldify着色和还原灰度图像和视频
  15. ati.c ATI顯卡開發源代碼
  16. Gnome桌面环境设置与美化
  17. 很多情侣看了以后,不在关机
  18. 03.07:BT下载&区块链技术
  19. layui 集成手写签名
  20. 必备的7种公关能力(收藏)

热门文章

  1. LeetCode 980. 不同路径 III(DFS+回溯)
  2. python考试题库程序改错_求助,程序改错
  3. php中写salt,请快速检查这个PHP+SALT实现-不工作?
  4. 数据分析方法-聚类算法
  5. Meta开发了一个AI模型,尝试解决维基百科的「性别偏见」问题
  6. 8 计算机组成原理第五章 中央处理器 控制器 硬布线控制器 微程序控制器
  7. 浏览器窗口尺寸clientHeight / scrollHeight / offsetHeight / innerHeight
  8. Leetcode 82. Remove Duplicates from Sorted List II
  9. struts2_HelloWorld
  10. 如何阻止button默认的刷新页面操作