数据挖掘算法_技术分享|大数据挖掘算法之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,一经查实,立即删除!

相关文章

漂亮的树

街上有n棵树&#xff0c;标号为1...n&#xff0c;第i棵树的高度为ai。定义这n棵树是漂亮的&#xff0c;当且仅当1. 对于所有的i&#xff0c;aian-i1&#xff1b;2. 对于1 < i < n / 2 (不是整除)&#xff0c;ai 1 ai 1&#xff1b;比如说 “2 3 4 5 5 4 3 2”和“1 2 3…

1012 The Best Rank (25)

题目描述: To evaluate the performance of our first year CS majored students, we consider their grades of three courses only: C - C Programming Language, M - Mathematics (Calculus or Linear Algrbra), and E - English. At the mean time, we encourage students …

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

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

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

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

php对学历要求较低,学历低学起php来难不难-PHP问题

首先大家要明白一点&#xff0c;你的学历和学习php的难易度的关系是不大的。php本身就有着简单、易学、易上手的优点&#xff0c;对于新手来说非常友好&#xff0c;所以完全不用担心这个问题。学习php&#xff0c;包括任何其他变成语言&#xff0c;在于你的态度、努力程度&…

spring(三)-事务管理

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

2017年网易校招题 解救小易

题目描述 有一片1000*1000的草地&#xff0c;小易初始站在(1,1)(最左上角的位置)。小易在每一秒会横向或者纵向移动到相邻的草地上吃草(小易不会走出边界)。大反派超超想去捕捉可爱的小易&#xff0c;他手里有n个陷阱。第i个陷阱被安置在横坐标为xi &#xff0c;纵坐标为yi 的位…

oracle数据库的拼接字符串,Oracle数据库拼接字符串

Ora-03113&bsol;Ora-03114与Oracle In 拼接字符串的问题刚深入接触Oracle不久(大学里以及刚参加工作时学到的Oracle知识只能算是皮毛),因为之前使用SqlServer有将近两年的时间,对SqlServer相对来说很熟悉,比较而言,Oracle真心很 ...oracle 数据库 分割字符串返回结果集函数…

思科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配置步骤&#xff1a;1、基本配置及配置内外网接口conf thostname ASAFW #设置主机名enable secret pass123 #设置特权密码c…

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

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

下学期第三次作业——SQA计划和验收测试规程设计

一、SQA计划 1.目的 在做云医院这个项目中&#xff0c;严格遵循SQA的计划&#xff0c;确保软件的质量的到保证 2.范围 随着项目的进行&#xff0c;不断的去改变计划&#xff0c;在项目开发的整个生命周期内。 3.人员分工 姓名角色开始时间预计工作量&#xff08;天&#xff09;…

ipython版本_使用pyenv切换版本后ipython无法使用解决方法

请务必认真阅读和理解本《免责声明及用户隐私协议》(以下简称《协议》)中规定的所有权利和限制。除非您接受本《协议》条款&#xff0c;否则您无权下载、安装或使用本”软件”、“文章”及其相关免费服务。您一旦阅读、使用、复制、下载、访问或以其它方式使用本站任意文章作品…

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

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

2017年网易校招题 输入一个数将其变为斐波那契数(最小步数)

题目描述 Fibonacci数列是这样定义的&#xff1a;F[0] 0F[1] 1for each i ≥ 2: F[i] F[i-1] F[i-2]因此&#xff0c;Fibonacci数列就形如&#xff1a;0, 1, 1, 2, 3, 5, 8, 13, ...&#xff0c;在Fibonacci数列中的数我们称为Fibonacci数。给你一个N&#xff0c;你想让其变…

linux 开发板传文件,Linux下用USB传输文件到开发板

记录一下解决EZ6410的板子在Linux下用USB来传输文件问题的过程~前两天ARM11的开发板到了&#xff0c;需要先验证一下各项功能。以往用FS2410时用的是minicomusb2ram&#xff0c;功能比windows下的dnw更强&#xff0c;因为minicom支持彩色显示&#xff0c;不会像dnw一样出现很多…

SQA1

客观地验证软件项目产品和工作是否遵循恰当的标准、步骤和需求。2.将软件质量保证工作及结果通知给相关组别和个人。 转载于:https://www.cnblogs.com/xyxa/p/8969778.html

matlab设置图片背景透明_MATLAB设置图片背景透明,和设定大小,适合论文中使用...

function CreateFigureOneColumn% 设置合适在Word中未分栏时插入图片的格式% 该函数在Figure图被绘制后使用&#xff0c;绘制Figure图时不要改变线的宽度和标签字体% 的大小。该函数会统一设置现款为2&#xff0c;字体大小为8.% 在调用函数之后&#xff0c;需要调用绘图…

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

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

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

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

linux 进程的缓存区,Linux-标准I/O缓冲区位于进程中那个位置,堆区?栈区?还是其他位置?...

为了缓冲区大小的更灵活的动态增长&#xff0c;应该是分配在堆里。在微软技术库里&#xff0c;找到一篇文章。**The function printf() takes up 512 bytes from the default heap in 16-bit applications and 4096 bytes in 32-bit applications.The standard I/O buffer gets…