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

363c5281497ebb9774f3d5e63d5848e1.png

程一舰

数据技术处

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

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

二、算法步骤

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

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

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

391cebdb4ef0da09c27b42dac8e5c305.gif

d71f4c2d220b547315b00460e8a2e84c.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486195.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

岩板铺地好吗_别人都说岩板好,我笑他人乐太早

若说岩板是陶瓷行业目前最火爆的产品,相信没有人会睁眼说瞎话表示反对。据统计,目前国内已建成的岩板生产线已有55条,计划在下半年建成/投产的岩板生产线已有17条。照此势头发展下去,国内岩板生产线的条数在2021年将逼近100条&…

人工智能和自然智能能否交汇?李飞飞对话斯坦福神经生物学教授Bill Newsome

作者:SHANA LYNCH机器之心编译编辑:张倩计算在神经科学中扮演了什么角色?在分子水平上理解大脑能否带来更好的神经网络?人工智能和自然智能之间是否存在一道无法逾越的鸿沟?会不会出现一个研究智能的统一框架&#xff…

spring(三)-事务管理

1、 Spring事务管理 事务管理:本质是使用spring管理事务,完成数据库对于事务的支持。 事务:一系列对数据库操作的集合,一个操作错误,所有都必须回滚,其特点是acid。 (1)事务并发存在…

思科nat配置实例_Cisco ASA 5520(8.2.4)配置企业内网案例

思科防火墙ASA5520 外观网络拓扑图如下内网 网段 192.168.2.0/24公网IP地址 118.25.235.100公网IP地址网关:118.25.235.1.1防火墙内网IP:192.168.2.1/24配置步骤:1、基本配置及配置内外网接口conf thostname ASAFW #设置主机名enable secret pass123 #设置特权密码c…

刘伟:什么是智能人机交互?

本文来自刘伟科学网博客北京邮电大学 刘伟这是一个非常有趣的问题,既涉及智能又牵扯人机交互,更重要的是两者之间的联系。如果把人机交互看成脖子以下,即生理与物理之间的相互作用(如视域、听域、可达域、舒适域)的话&…

警方建立了一个人工智能来预测暴力犯罪,它有严重缺陷

来源:机器学习研究组订阅号在英国,有一个被称为“最严重暴力”(简称MSV,即Most Serious Violence)的预测系统,这个预测系统归属于国家数据分析解决方案(NDAS)项目。过去两年&#xf…

大数据应用开发1——配置基础环境

一、基础环境配置 1.配置虚拟网络 1.1、点击1、编辑2和3, 1.2、点开4,编辑网关 2、配置虚拟机环境 1.1、安装一台虚拟机,使用root用户登录,打开终端 1.2修改主机名 终端输入: vim /etc/hostname使用vim编辑/etc/ho…

交叉科学部如何建?基金委:要做好这4点

来源:科学网微信公号 11月29日,国家自然科学基金委员会(以下简称自然科学基金委)交叉科学高端学术论坛在北京召开。第十二届全国政协副主席、中国科协名誉主席、中国科学院院士韩启德,自然科学基金委原主任、中国科学院…

智能三定律(1),提出智能三条定律的背景和原因

前言:智能是重要的智能科学基础概念,如何解读它也一直存在争议,2005年以来,通过对互联网进化规律、标准智能模型与AI智商评测的研究,我们获得了关于智能的新启发与新思考,2020年5月,智能定律初探…

2017年网易校招题 末尾0的个数

题目描述 输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n 10; n! 3628800,所以答案为2输入描述: 输入为一行,n(1 ≤ n ≤ 1000) 输出描述: 输出一个整数,即题目所求 示例1输入 10 输出 2 思路:要统计末尾0的个数,只需要统…

麻省理工学院的牛人解说数学体系,你到哪个层次了?

来源:数学与人工智能为什么要深入数学的世界我不否认现在广泛流行的Graphical Model是对复杂现象建模的有力工具,但是,我认为它不是panacea,并不能取代对于所研究的问题的深入的钻研。如果统计学习包治百病,那么很多 “…

linux gpio设备驱动程序,嵌入式Linux设备驱动开发之:GPIO驱动程序实例-嵌入式系统-与非网...

11.3 GPIO驱动程序实例11.3.1 GPIO工作原理FS2410开发板的S3C2410处理器具有117个多功能通用I/O(GPIO)端口管脚,包括GPIO 8个端口组,分别为GPA(23个输出端口)、GPB(11个输入/输出端口)、GPC(16个输入/输出端口)、GPD(16个输入/输出端口)、GPE(16个输入…

它将改变一切:AI解决了生物学50年来的重大难题

图片来源:Pixabay来源 公众号“机器之心”CASP14 组织者、年近七旬的 UC Davis 科学家 Andriy Kryshtafovych 在大会上感叹道,I wasnt sure that I would live long enough to see this(我活久见了)[1]。11 月 30 日,…

教你彻底学会动态规划——入门篇

动态规划相信大家都知道,动态规划算法也是新手在刚接触算法设计时很苦恼的问题,有时候觉得难以理解,但是真正理解之后,就会觉得动态规划其实并没有想象中那么难。网上也有很多关于讲解动态规划的文章,大多都是叙述概念…

linux终端密码星星,如何获得您的sudo密码在Ubuntu中显示为星号 | MOS86

我的一个朋友最近从Windows切换到Ubuntu Linux。在新操作系统花了一个星期左右的时间,他提出了一个问题109mh1112虽然这确实导致了这里和那里的一些打字错误,一次输入正确的sudo密码已被证明是非常有挑战性的,主要是因为在输入密码时没有显示…

正则 null_正则表达式exec、match、test的区别

一、定义的不同RegExp.prototype.test()RegExp.prototype.exec()String.prototype.match()从MDN的定义可以看出,test和exec是正则实例的API,match是String的,这一点决定了调用方式的不同。二、应用场景的不同如果只是想要判断正则表达式和字符…

Gartner发布2021年重要战略科技趋势!

来源:Gartner不久前,全球领先的信息技术研究和顾问公司Gartner发布企业机构在2021年需要深挖的重要战略科技趋势。分析师们在举行的Gartner IT Symposium/Xpo大会美洲站虚拟会议上展示了自己的发现。Gartner研究副总裁Brian Burke表示:“各企…

linux at24测试程序,linux 2.6下eeprom at24c08 i2c设备驱动(new style probe方式)

1 修改bsp_以便支持probe1.1 AT24C08地址的确定原理图上将A2、A1、A0都接地了,所以地址是0x50。注意到是7位(bit).1.2 修改bsp采用友善之臂的, 2.6.32.2内核[rootlocalhost mach-s3c2440]# vim/opt/FriendlyARM/mini2440/linux-2.6.32.2/arch/arm/mach-s3c2440/mach…

Java中注释的使用

如何在Java中使用注释 在编写程序时,经常需要添加一些注释,用以描述某段代码的作用。 一般来说,对于一份规范的程序源代码而言,注释应该占到源代码的 1/3 以上。因此,注释是程序源代码的重要组成部分,一定要…

关于动态规划,你想知道的都在这里了!

作者 | Your DevOps Guy翻译| 火火酱~,责编 | 晋兆雨出品 | AI科技大本营头图 | 付费下载于视觉中国什么是动态规划?它又有什么重要的呢?在本文中,我将介绍由Richard Bellman在20世纪50年代提出的动态规划(dynamic pro…