文章目录

前言

一、学习类型

二、机器学习算法使用步骤

1.收集数据

2准备输入数据

3分析输入数据

4训练算法

5测试算法

6使用算法

三、KNN

1KNN简介

2KD树简介

总结



前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的KNN的原理以及KD树基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、学习类型

监督学习:监督学习通过学习训练数据集中自变量和因变量之间的映射关系,根据其来预测未知数据的输出结果。通过训练标签数据样本来构建模型,进而给无标签数据特定标签。

无监督学习:训练无标签数据,常用于聚类和降维。聚类是把相似对象聚合在一起,目标是确定一组未标记数据的内在关系,进而对未标记数据分类。聚类常用于数据挖掘和信息检索等。“降维”主要用于处理样本数据的特征维度过高但数据本身稀疏的情况。降维对数据的数学关系进行变换将数据集从一个高维度空间映射到另一个低纬度的空间中,通过提升样本的密度来解决“维度灾难”问题。

半监督学习:训练时小部分数据有标签,大部分数据无标签,比监督学习代价成本低,也能达到较高准确度。

强化学习:计算机通过多次迭代自主地修正算法,直到可以做出正确的判断为止。强化学习主要用于描述和解决计算机与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。

二、机器学习算法使用步骤

1.收集数据

网络爬虫收集网站数据,或者公开的数据集

2准备输入数据

确保数据格式符合要求,使用标准数据格式可融合算法和数据源,方便匹配操作。

3分析输入数据

主要人工分析数据,确保没有垃圾数据

4训练算法

将第2、3步得到的格式化数据输入到算法中,抽取信息。

5测试算法

为了评估算法,要测试算法效果。对于监督学习,必须已知用于评估算法的目标变量值;对于无监督学习,必须用其他评估手段检测成功率。

6使用算法

将算法转化为应用程序,检测以上步骤是否在实际操作中能正常运行。

三、KNN

1KNN简介

K-近邻(K-Nearest Neighbor,KNN)算法是数据分类技术中最简单的方法之一。它的工作原理是:假设有一个待分类的新样本,在特征空间(每一个样本被称作是一个数据点,通常由特征向量表示,所有特征向量存在的空间称为特征空间)中与它最相似(特征空间中位置最邻近)的K个样本中的大多数属于某一个类别,则这个待分类的样本也属于这个类别。值得注意的是,使用K-近邻算法时,需要已知样本集中每一个数据与所属分类的对应关系。一般来说,只选择样本数据集中前K个最相似的数据,这就是K-近邻算法中K的由来。通常K是不大于20的整数。最后,将待分类的新数据归类于所选择的K个最相似数据中出现次数最多的类别。

2KD树简介

实现K-近邻算法时,需要考虑如何对训练数据快速地进行K-近邻搜索,尤其在高维特征空间或大容量训练数据集的应用中,该问题显得更加突出。K-近邻算法的最简单实现是线性扫描,即计算输入数据与每一个训练数据的距离。当训练集较庞大时,这种计算非常耗时,因此这种方法在实际应用中具有较大的局限性。为了提高K-近邻搜索的效率,可以考虑使用特殊的结构存储训练数据,以减少计算距离的次数。具体实现方法种类很多,本书将主要介绍KD树方法。

KD树是K-Dimension树的简称,是一种查询索引结构,广泛应用于数据库索引中。它是对数据点在K维空间中进行划分的一种数据结构,主要应用于多维空间关键数据的搜索(如范围搜索和最近邻索)。KD树是每个结点都为K维点的二叉树,本质上KD树是一种平衡二叉树(左子树和右子树的深度之差的绝对值不超过1,且它的左子树和右子树都是平衡二叉树),目的是提高数据查找的效率。
KD树是一种空间划分树,将整个向量空间划分为特定的几个部分,然后在划分的特定空间内进行相关搜索操作。比如在二维空间中, KD树按照一定的划分规则把二维空间划分出多个空间。

·针对高维数据进行KD树的构建时,需要针对每一个维度进行二分操作。构建KD树的方法如下。
(1)建立根结点,使根结点对应于K维空间中包含所有数据点的超矩形区域(参考图中二维空间中切分的矩形)。
(2)选取方差最大的特征作为分割特征。
(3)选择分割特征的中位数作为分割点。在超矩形区域上选择一个坐标轴和在此坐标轴上的一个切分点,确定一个超平面,这个超平面通过选定的切分点并垂直于选定的坐标轴,将当前超矩形区域切分为左、右两个子空间。
(4)此时,将数据集中小于中位数的特征值传递给左子空间,大于中位数的特征值传递给根结点的右子空间。此时,数据被分到两个子空间。

(5)递归步骤(2)~(4),不断地对K维空间进行切分,生成子结点,直到子空间内没有数据时终止(终止时的结点为叶子结点)。在此过程中,将数据保存在相应的子结点上。
.KD树中,最顶端的结点称为根结点,没有子结点的结点为叶子结点,而子结点是相对于父结点来说的,它是父结点的下一层结点。

·利用KD树可以省去对大部分数据点的搜索,从而减少搜索的计算量,例如,在搜索最近邻点任务中,给定一个目标点,搜索其最近邻,首先找到包含目标点的叶子结点然后从该叶子结点出发,依序回溯到父结点,不断查找与目标点最近邻的结点,当确定不可能存在更近的结点时终止。这样搜索就被限制在空间的局部区域上,效率大为提高。
·搜索KD树的具体流程如下所示。
·(1)在如D树中找出包含目标点x的叶子结点。从根结点出发,递归地向下访问KD树。若目标点当前维度的坐标值小于分割超平面的坐标值,则移动到左子结点否则移动到右子结点,直到子结点为叶子结点为止。
·(2)将第(1)步中确定的叶子结点作为“当前最近点”。

·(3)递归地向上回溯,在每个结点进行以下操作:
·如果该结点保存的数据点比当前最近点距目标点更近,则将该数据点作为“当前最近点”;“当前最近点”一定存在于该结点某一个子结点对应的区域中。检查该子结点的兄弟结点(同一父结点的子结点之间互为兄弟结点)对应的区域是否有更近的点。具体操作为检查另一个子结点对应的区域是否与“超球体”相交。“超球体”是指以目标点为球心,以目标点与“当前最近点”间的距离为半径的球体空间。如果与“超球体”相交,则说明可能在另一个子结点对应的区域内存在距离目标更近的点,此时,移动到另一个子结点。接着,递归地进行最近邻搜索。如果不相交,则向上回退。
·(4)当回退到根结点时搜索结束。最后的“当前最近点”即为目标点x的最近邻点。


总结

提示:这里对文章进行总结:
以上就是今天要讲的内容,本文仅仅简单介绍了KNN的原理以及KD树

【KNN以及KD树】相关推荐

  1. 用python手写KNN算法+kd树及其BBF优化(原理与实现)(下篇)

    用python手写KNN算法+kd树及其BBF优化(原理与实现)(下篇) 接上一篇用python手写KNN算法+kd树及其BBF优化(原理与实现)(上篇) 我们使用training2和test2两个数 ...

  2. python机器学习案例系列教程——K最近邻算法(KNN)、kd树

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 K最近邻简介 K最近邻属于一种估值或分类算法,他的解释很容易. 我们假设一个人的优秀成为设定为1.2.3.4.5.6.7.8.9.10 ...

  3. knn之KD树深度构建原理

    K临近算法之KD树构造 在使用k近邻法进行分类时,对新的实例,根据其k个最近邻的训练实例的类别,通过多数表决的方式进行预测.由于k近邻模型的特征空间一般是n维实数向量,所以距离的计算通常采用的是欧式距 ...

  4. KNN算法与Kd树(转载+代码详细解释)

    最近邻法和k-近邻法 下面图片中只有三种豆,有三个豆是未知的种类,如何判定他们的种类? 提供一种思路,即:未知的豆离哪种豆最近就认为未知豆和该豆是同一种类.由此,我们引出最近邻算法的定义:为了判定未知 ...

  5. kd树 python实现_Python KD树实现+简单的KNN实现

    写KD树的时候没把类别考虑进去...所以先用KD算出最近的k个点,然后找到对应分类最后输出占比最大的 KD树是一种二叉树,用来分割空间上得点 一个树节点的结构如下: class TreeNode: i ...

  6. KNN分类器、最近邻分类、KD树、KNN分类的最佳K值、基于半径的最近邻分类器、KNN多分类、KNN多标签分类、KNN多输出分类、KNN分类的优缺点

    KNN分类器.最近邻分类.KD树.KNN分类的最佳K值.基于半径的最近邻分类器.KNN多分类.KNN多标签分类.KNN多输出分类.KNN分类的优缺点 目录

  7. KD树是什么? 为什么要用KD树? KD树怎么用? KD树和KNN的关联是什么?

    KD树是什么? 为什么要用KD树? KD树怎么用? KD树和KNN的关联是什么? sklearn中如何配置? 为了提高KNN的搜索效率,这里介绍一种可以减少计算距离次数的方法---KD树方法. KD树 ...

  8. java knn kd树_KNN算法之KD树(K-dimension Tree)实现 K近邻查询

    KD树是一种分割k维数据空间的数据结构,主要应用于多维空间关键数据的搜索,如范围搜索和最近邻搜索. KD树使用了分治的思想,对比二叉搜索树(BST),KD树解决的是多维空间内的最近点(K近点)问题.( ...

  9. 基于KD树的K近邻算法(KNN)算法

    文章目录 KNN 简介 KNN 三要素 距离度量 k值的选择 分类决策规则 KNN 实现 1,构造kd树 2,搜索最近邻 3,预测 用kd树完成最近邻搜索 K近邻算法(KNN)算法,是一种基本的分类与 ...

最新文章

  1. OpenCV Error: Sizes of input arguments do not match (The operation is neither 'array op array' (wher
  2. 神策数据实战学堂开课,分享行业最佳业务和技术实践
  3. 你所不知道的setTimeout
  4. 安卓 Input Events(输入事件)
  5. Raect Router 4 的使用 (1)
  6. Unity大中华区总经理兼全球副总裁张俊波:5G的来临,游戏运行于云端变得可能
  7. 低效能人士的七个坏习惯
  8. spring boot 配置网关时404错误_Kong中使用grpcweb插件代理grpc服务时遇到的坑
  9. java 中如何临时保存某输入值_java笔记临时存放
  10. (转)互利主义:道德经济人的基本行为准则
  11. 洛谷P3354 [IOI2005]Riv 河流 题解
  12. Android 创建淡入淡出动画的详解
  13. 五千图文,详解SI信号完整性工程师工作流程
  14. 放大缩小不习惯?只需两步教你solid works如何设置反转滚轮缩放
  15. 可以发布任务悬赏的app
  16. 计算机应用基础 周凌,计算机基础毕业论文范文
  17. 手把手教你用C#写一个刷屏软件
  18. 工厂人员安全生产,信息化人员定位技术提供安全保障
  19. 联盟化的LPL是否能带来精彩的英雄联盟比赛?
  20. LTE(4G) VOLTE协议栈架构

热门文章

  1. Python学习(十四)——常用模块1
  2. FilterDispatcher
  3. 〖Python零基础入门篇⑨〗 - 数据类型介绍
  4. 机房环境监控系统告警的概念!
  5. 微软又给谷歌「双重暴击」,ChatGPT或将加入Word、PPT和Excel!
  6. ”找你妹“是如何利用积分墙盈利的。
  7. 整体化方法打造基于模型的企业(MBE)| 达索系统百世慧®
  8. C语言 数值交换的三种方法
  9. ARM generic timer驱动代码分析
  10. java 获取当前方法的调用栈