机器学习一文搞懂K近邻算法(KNN),附带多个实现案例

kkk近邻学习是一种常用的监督学习方法,比如:判断一个人的人品,只需要观察与他来往最密切的几个人的人品好坏就可以得出,即“近朱者赤,近墨者黑”。

理论/原理:“物以类聚,人以群分”

kkk近邻法的工作机制很简单:

1、K值的选择

2、距离度量

3、决策规则

KNNKNNKNN在做回归和分类的主要区别在于最后做预测时的决策方式不同:

(1)分类预测规则:一般采用多数表决法或者加权多数表决法

假设图中“?”表示待预测样本,红色圆表示一类,蓝色方块表示一类,2和3表示到待预测样本的距离

1.多数表决法:

2.加权多数表决法:

图中,双箭头线上的数表示到待预测样本的距离

实现kNN分类算法的伪代码:

对未知类别属性的数据集中的每个点依次执行一下操作:

欧氏距离公式:

d=∑mi=1(xiyi)2√d=\sqrt{\sum_{i=1}^m(x_i-y_i)^2}d=i=1∑m(xiyi)2例如求点(1,0,0,1)(1,0,0,1)(1,0,0,1)和(7,6,9,4)(7,6,9,4)(7,6,9,4)之间的距离:(71)2+(60)2+(90)2+(41)2√\sqrt{(7-1)^2+(6-0)^2+(9-0)^2+(4-1)^2}(71)2+(60)2+(90)2+(41)2

检测分类器效果:

以上算法的实现是用于分类的,决策规则使用了多数表决法;此算法通过改变决策规则,同样可以用于回归。

1、案例1:约会网站的配对效果

样本包括3种特征:

样本包括3种标签:

部分数据格式为:

代码可见:02_约会网站的配对效果.py

2、案例2:手写数字识别系统

如下是0的一种表示:

代码可见:03_手写数字识别系统.py

KNN算法的重点在于找出K个最邻近的点,主要方法如下:

1、蛮力实现(brute)

2、KD树(KD_Tree)

除此之外,还有一些从KD_Tree修改后的求解最邻近点的算法,比如:BallTree、BBFTree、MVPTree等

(1)KD数的构建

\quad\quadKD树采用从mmm个样本的nnn维特征中,分别计算nnn个特征取值的方差,用方差最大的第kkk维特征nkn_knk作为根节点。对于这个特征,选择取值的中位数nkvn_{kv}nkv作为样本的划分点,对于小于该值的样本划分到左子树,对于大于等于该值的样本划分到右子树,对左右子树采用同样的方式找方差最大的特征作为根节点,递归即可产生KD树。

假设二维样本为:{(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)}\{(2,\3),\(5,\4),\(9,\6),\(4,\7),\(8,\1),\(7,\2)\}{(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)},下面我们来构建KD树:

xˉ1=2+5+9+4+8+76=5\bar{x}_1=\frac{2+5+9+4+8+7}{6}=5xˉ1=62+5+9+4+8+7=5xˉ2=3+4+6+7+1+26≈3.83\bar{x}_2=\frac{3+4+6+7+1+2}{6}\approx3.83xˉ2=63+4+6+7+1+2≈3.83s2x1=(25)2+(55)2+(95)2+(45)2+(85)2+(75)26=6.5s^2_{x_1}=\frac{(2-5)^2+(5-5)^2+(9-5)^2+(4-5)^2+(8-5)^2+(7-5)^2}{6}=6.5sx12=6(25)2+(55)2+(95)2+(45)2+(85)2+(75)2=6.5s2x2≈4.7s^2_{x_2}\approx4.7sx22≈4.7

方差表示数据的离散程度,离散程度越大,值越大因此,选择第1维特征x1x_1x1作为根节点

x1x_1x1取值为2,4,5,7,8,92,4,5,7,8,92,4,5,7,8,9中位数取7来划分,小于该值的放在左子树,大于该值的放在右子树

(2)KDtree查找最近邻

当我们生成KD树以后,就可以取预测测试集里面的样本目标点了。

假设要寻找点(2,2.5)(2,2.5)(2,2.5)的最近邻点:

1、鸢尾花数据分类

使用Logistic算法和KNN算法对鸢尾花数据进行分类,比较结果;具体内容在代码的注释中有介绍画出下面两张图,需要将代码整合起来,才能画出来。

2、信贷审批

具体内容将代码介绍

可用于分类与回归输入为实例特征向量,输出为类别,可以是多分类没有显示的学习过程,假设给定一个有监督的训练集,新的实例根据最近k个实例的类别多数表决决定属于哪一类利用训练数据对特征空间划分三要素:k值、距离度量、分类规则算法输入:训练集:为输入实例特征向量为实例类别;待分类的实例x。输出实例x所属类别y用给定的距离度量,在T...

一、K近邻算法基础KNN-------K近邻算法--------K-NearestNeighbors思想极度简单应用数学知识少(近乎为零)效果好(缺点?)可以解释机器学习算法使用过程中很多细节问题更完整的刻画机器学习应用的流程kNN的过程二、scikit-learn中的机器学习算法封装KNN/KNNN.pykNN_function...

一、算法介绍监督学习算法分类算法查找与已有数据中最接近的k个类别,分类为出现类别最大概率的类别二、一般流程:三、代码实现:python3中已经废弃iteritems()函数,使用会报错:关键代码如下:使用AnacondaNavigator集成的JupyterLab软件运行:传入参数,请求结果为:详细问题可参考:1.Python3字典中items()和pytho...

1、KNN的基本原理我们通常将机器学习算法分为有监督学习和无监督学习两类,通俗的说,我们会按照训练样本中是否含有标签来区分这两类,KNN算法便是一种适用于带标签的数据场景的算法,我们可以将它归类为一种有监督学习方法。KNN算法,我们给定一个数据集,对于一个新来到的样本,我们在数据集中找到距离该样本最近的K个样本,在这K个样本中某一类出现的次数最多我们就把这个新的样本分到这个类别中。举一个图例...

写在前面K近邻(K-nearestneighbor,k-nn)是一种常用的机器学习监督学习方法,可用于分类和回归问题。其工作机制为:给定测试样本,基于某种距离度量找出训练集中与其最靠近的K个训练样本,然后基于这K个邻居来预测给定样本。对于分类任务,可使用“投票法”;对于回归任务,可使用“平均法”,即取这K个邻居的平均值最为预测结果,进一步地,还可...

一、引入二、KNN算法1.文字描述2.算法过程3.算法优缺点三、KNN模型1.距离度量(Distancemetric)2.k值的选择(Choiceofkvalue)3.分类规则(Classificationdecisionrule)四、总结一、引入可用于分类(二分类/多分类)或者回归,属于监督学习方法1.思想给定测试样本...

1什么是K-近邻算法—KNN1.1k-近邻算法特点也叫KNN算法,是一个非常适合入门的算法,拥有如下特性:*思想极度简单,应用数学知识少(近乎为零)对于很多不擅长数学的小伙伴十分友好,KNN算法几乎用不到数学专业知识*效果好虽然算法简单,但效果也不错缺点也是存在的,后面会进行讲解1.2什么是K-近邻算法上图中的数据点是分布在一个特征空间中:横轴表示肿瘤大小,纵轴...

基本概念k近邻法(k-nearestneighbor,k-NN)是1967年由CoverT和HartP提出的一种基本分类与回归方法。基本概念如下:存在一个样本数据集合,所有特征属性已知,并且样本集中每个对象都已知所属分类。对不知道分类的待测对象,将待测对象的每个特征属性与样本集中数据对应的特征属性进行比较,然后算法提取样本最相似对象(最近邻)的分类标签。一般来说,我们只选择样本数据集中...

对发送/接收的字节数目计数,显示到底部状态栏中。GitHub源码:Qt串口调试助手下载接收字节数计数(1)在mainwindow.h文件中创建收发数属性,再创建两个标签指针,用于显示收发数目。(2)mainwindow.c构造函数中创建两个标签,用于显示收发数量,并将标签添加到底部状态栏中。(3)在串口接收槽函数中,添加接收...

Iamwritingascriptinpythonwhichcanconnecttokarafconsolelikesudo./clientandafterloggingIwanttoseewhatandallbundlesareactivebyusingcommandslikelist|grep-iactive.Iwant...

CananyonehelpIneedtheformulaforCellCExcel'sdocumentationaboutIFfunction:IF(logical_test,[value_if_true],[value_if_false])Inourcase:Therefore:IfyouareusingGoogleSheets,you...

Icurrentlyhaveadotcloudappthatusesdjangotoserveeverything.Itworksgreat,however,werecentlyhadoursiteredoneinangular.js,andIdon'twanttousedjangotoservetheactualhtmlpa...

I'mtryingtofigureouthowtoputmatchedpartofastringtotheendofthestringinphp.Forexample,let'ssaythatwehavestringlikethis:Atfinal,I'dliketoobtainthis:Code:Iknowthat...

THE END
1.局域网交友平台设计与实现6.1交友数据 a、能够将交友数据一键导出为execl表格 b、性别、部门、学校、MBTI、星座、故乡的统计图 6.2网站数据 a、能够显示网站的登录数据。包括登录IP,登录时间,是否管理员登录。 1 2 3 4 5 三、性能需求 响应时间:用户操作的响应时间应在 3 秒内,确保用户体验流畅。 https://blog.csdn.net/weixin_44679919/article/details/144271230
2.开发一个前后端分离的webgis城市共享单车投放管理系统(2)currentDrawType用于存储当前绘制类型(点线面),vectorSource用于存储当前绘制矢量图层源,用于操作后续的清除绘制图层操作,setDrawType(type)用于设置当前绘制类型,setVectorSource用于设置当前矢量数据源,clearDraw()用于进行矢量图层的清除操作 新建@/components/DrawButton.vue https://zhuanlan.zhihu.com/p/9646296403
3.pythonk邻近算法应用实例(一)改进约会网站的配对效果改进约会网站的配对效果 应用背景: 某约会网站收集了一些数据放在datingTestSet.txt中,每个样本数据占据一行,总共有1000行。样本主要包含以下3种特征: □ 每年获得的飞行常客里程数 □ 玩视频游戏所耗时间百分比 □ 每周消费的冰淇淋公升数 在将上述特征数据输人到分类器之前,必须将待处理数据的格式改变为分类器可以接https://segmentfault.com/a/1190000011266815/
4.机器学习(七)基于KNN分类的约会网站配对改进算法某APP用户希望分类软件可以更好地帮助她将匹配对象划分到确切的分类中。此外还可以收集了约会软件未曾记录的数据信息,她认为这些数据更有助于匹配对象的归类。收集的部分信息如下图所示: 数据集下载 样本主要包含以下3种特征: 每年获得的飞行常客里程数 玩视频游戏所耗时间百分比 https://www.ucloud.cn/yun/19982.html
5.机器学习(一)——KNN算法之约会网站匹配效果为了熟悉和掌握K近邻算法,改进约会网站的匹配策略。 【实验要求】 用KNN算法改进约会网站的配对效果。 【算法原理】 k近邻法(k-nearest neighbor, k-NN)原理:存在一个样本数据集合,也称作为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一个数据与所属分类的对应关系。输入没有标签的新数据后,将https://www.jianshu.com/p/a4fd43024370
6.8月约会日期,带有数字多维数据集设计背景.日期8库存照片.图片照片 关于 8月约会日期,带有数字多维数据集设计背景. 日期8. 图片 包括有 季节, 纸张, 格式 - 325581548https://cn.dreamstime.com/%E6%9C%88%E7%BA%A6%E4%BC%9A%E6%97%A5%E6%9C%9F%EF%BC%8C%E5%B8%A6%E6%9C%89%E6%95%B0%E5%AD%97%E5%A4%9A%E7%BB%B4%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AE%BE%E8%AE%A1%E8%83%8C%E6%99%AF-%E6%97%A5%E6%9C%9F-image325581548
7.网络问卷调查系统12篇(全文)以ed X开放数据集中的学习者类型和比率来看, 全球用户中获取证书者 (certified) 占2.8%, 积极学习者 (explored) 占3.5%, 一般学习者 (viewed) 占56.1%, 仅注册者 (registered) 为37.6%, 而国家信息为中国的用户当中, 这几项的比例分别为1.2%、2.4%、62.1%和34.3%。研究显示, 除去学习者语言、网络访问等https://www.99xueshu.com/w/ikeyovrwf3nd.html
8.约会app开发仿爱聊软件app定制开发算法是围绕特定任务构建的指令集,旨在通过特定的数据处理获得所需的结果。 以同样的方式,约会软件app算法用于根据用户的偏好、行为和其他重要因素(如年龄、位置、兴趣和个性特征)来匹配用户。 它们旨在从用户的活动中学习,因此,随着时间的推移,推荐会变得越来越好。 https://www.yanding8.com/post/1764.html
9.海伦约会数据(KNN练习)数据集天池实验室 数据集 公共数据集 正文 海伦约会数据(KNN练习) 我要牛叉2018-10-1513614CC-BY-SA-NC 4.0 新建Notebook 内容 Notebook 评论 描述 暂无描述 数据列表 数据名称上传日期大小下载 datingTestSet2.txt2018-10-1526.43KB 文档 目录https://tianchi.aliyun.com/dataset/4917
10.AutoML取人代之?四个工程师两个数据集将之干翻!快速(约会)分类数据集测试结论: 数据科学家能够向 AutoML 平台提供特征工程数据集,从而提高该平台的性能水平。 Azure 在具体使用模型方面更为透明;谷歌平台则拒绝公开模型创建与选择信息。 谷歌无法很好地处理独热码变量。 数据集 2: ASHRAE 数据集概述 https://www.51cto.com/article/609129.html
11.将约会XML数据导入Outlook约会对象(Outlook)Microsoftxml是 XML 字符串或表示有效 XML 文件的路径的字符串。 就以下代码示例而言,XML 使用以下 XML 标记分隔约会数据: 约会数据分隔 XML 标记 整个约会数据集<约会> 约会集中的每个约会<委任> 约会的开始时间<starttime> 约会的结束时间<endtime> 约会标题<主题> https://msdn.microsoft.com/zh-cn/ff869762/
12.上传者:qq41855990时间:202007机器学习 约会网站数据集 上传者:qq_40506723时间:2021-10-02 数据预处理-归一化-数据文件dating.txt 数据预处理-归一化-数据文件 上传者:csj50时间:2023-08-07 Springer-R-book:V. Pagonis-Springer于2021年为《使用R进行发光数据分析和建模》一书的R代码 https://www.iteye.com/resource/qq_41855990-12623594