热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

算法学习——K近邻算法

一、K近邻算法二、K近邻模型k近邻法使用的模型实际上对应于对特征空间的划分。模型由三个基本要素——距离度量、k值的选择和分类决策规则决定。2.1模型2.2距离度量例题ÿ

一、K近邻算法

在这里插入图片描述
在这里插入图片描述


二、K近邻模型

k近邻法使用的模型实际上对应于对特征空间的划分。模型由三个基本要素——距离度量、k值的选择和分类决策规则决定。


2.1 模型

在这里插入图片描述


2.2 距离度量

在这里插入图片描述
在这里插入图片描述
例题:距离度量使用Lp距离进行计算。
在这里插入图片描述
下面给出上述计算的做法,便于理解
L1(X1,X3)= 6 = 3+3
L2(X1,X3)= 4.24 = (3的平方+3的平方)开根号
L3(X1,X3)= 3.78 = (3的3次方+3的3次方)开根号3
L4(X1,X3)= 3.57 = (3的4次方+3的4次方)开根号4


2.3 K值的选择

通常采用交叉验证法选取最优的K值
在这里插入图片描述


2.4 分类决策规则

在这里插入图片描述
在这里插入图片描述


三、kd树

在这里插入图片描述


3.1 构造kd树

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例题:kd树构造
在这里插入图片描述
在这里插入图片描述
下面给出上述计算的做法,便于理解


  1. 构建根结点,此时切分维度为x轴(即数据的第一维度),上述集合在x轴从小到大排序为(2,3),(4,7),(5,4),(7,2),(8,1),(9,6);中值为(7,2);(2,3),(4,7),(5,4)挂在(7,2)结点的左子树;(8,1),(9,6)挂在(7,2)结点的右子树。
  2. 构建(7,2)结点的左子树,点集合(2,3),(4,7),(5,4),此时切分维度为y轴(即数据的第二维度),中值为(5,4)。接着按x轴切分,(2,3)挂在(5,4结点)的左子树,(4,7)挂在(5,4)结点的右子树。
  3. 构建(7,2)结点的右子树,点集合(8,1),(9,6),此时切分维度为y轴,中值为(9,6)。接着按x轴切分,(8,1)挂在(9,6)结点的左子树。至此k-d tree构建完成。

3.2 搜索kd树

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
例题:搜索kd树
在这里插入图片描述
在这里插入图片描述
下面给出上述计算的做法,便于理解
1.找到包含S的叶结点D,因为最近邻点肯定在以S为圆心的圆内。
2.上退回D的父结点B和B的父结点F搜索最近邻。由图可知,结点B中只有结点D与S最近,而F与圆不相交,所以不存在最近邻点。
3.上退回根结点A,由图可知,A与圆不相交,所以不存在最近邻点。
4.向下搜索根节点A的另一个结点G。由图可知,而G与圆不相交,所以不存在最近邻点。
5.向下搜索结点C,发现C和圆相交,且相交点在圆内为实例点E。由图可知,E比D距离S更近,最后,得到E是点S的最近邻点。


四 、K近邻的概要在这里插入图片描述


推荐阅读
  • 近年来,大数据成为互联网世界的新宠儿,被列入阿里巴巴、谷歌等公司的战略规划中,也在政府报告中频繁提及。据《大数据人才报告》显示,目前全国大数据人才仅46万,未来3-5年将出现高达150万的人才缺口。根据领英报告,数据剖析人才供应指数最低,且跳槽速度最快。中国商业结合会数据剖析专业委员会统计显示,未来中国基础性数据剖析人才缺口将高达1400万。目前BAT企业中,60%以上的招聘职位都是针对大数据人才的。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • Go语言实现堆排序的详细教程
    本文主要介绍了Go语言实现堆排序的详细教程,包括大根堆的定义和完全二叉树的概念。通过图解和算法描述,详细介绍了堆排序的实现过程。堆排序是一种效率很高的排序算法,时间复杂度为O(nlgn)。阅读本文大约需要15分钟。 ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • HashMap的相关问题及其底层数据结构和操作流程
    本文介绍了关于HashMap的相关问题,包括其底层数据结构、JDK1.7和JDK1.8的差异、红黑树的使用、扩容和树化的条件、退化为链表的情况、索引的计算方法、hashcode和hash()方法的作用、数组容量的选择、Put方法的流程以及并发问题下的操作。文章还提到了扩容死链和数据错乱的问题,并探讨了key的设计要求。对于对Java面试中的HashMap问题感兴趣的读者,本文将为您提供一些有用的技术和经验。 ... [详细]
  • HashMap的扩容知识详解
    本文详细介绍了HashMap的扩容知识,包括扩容的概述、扩容条件以及1.7版本中的扩容方法。通过学习本文,读者可以全面了解HashMap的扩容机制,提升对HashMap的理解和应用能力。 ... [详细]
  • 文章目录题目:二叉搜索树中的两个节点被错误地交换。基本思想1:中序遍历题目:二叉搜索树中的两个节点被错误地交换。请在不改变其结构的情况下 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了源码分析--ConcurrentHashMap与HashTable(JDK1.8)相关的知识,希望对你有一定的参考价值。  Concu ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 二叉树的前序遍历(递归版):publicArrayList<Integer> ... [详细]
author-avatar
J-cha0
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有