当前位置: 首页 > news >正文

机器学习-KNN

KNN:K最邻近算法(K-Nearest Neighbor,KNN)

用特征空间中距离待分类对象的最近的K个样例点的类别来预测。

投票法:K 个样例的对数类别。

  1. k=1:最近邻分类

  2. k 通常是奇数(因为我们根据这个K数据判断类别,如果是偶数可能出现类别对半的情况)

基于实例学习:不需要训练。

K 最邻近算法步骤:

  1. 计算待分类对象鱼所有样例点的距离,找出 K 个距离最近的点。(目前用欧氏距离)

  2. 通过这 K 个点的投票决定待分类对象的类别。

    1. 等权投票

    2. 加权投票:相似度加权

如图:K =3,分类结果是三角形

          k=5,分类结果是正方形

如果我们进行了加权,即便是K=5,由于实例点离三角形特别近,分类结果也有可能为三角形

如何确定K

  1. K 太小,对噪音点敏感(早点附近的点,将都被分错)

  2. K太大,模型不细致(如果 K 是所有样本数,那么分类结果将是训练数据中数量最多的类别,相当于朴素贝叶斯分类器中,只用了先验概率)

  3. K权限 模型复杂度和经验风险

  4. 交差验证

K-D Tree(K-Dimensional Tree)

KD Tree 是一种数据结构。对 k 维空间里的点进行组织,存储为树形的数据结构。

KD Tree 为K维空间进行分割,主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索)。

                                              图1

如图1:空间先按红线分割,然后前后两个空间分别按绿色线分割,然后在四个空间中再按蓝色线分割

建树:

  1. 对当前所有点,依次按照一个维度的中位数为切分线进行切割,将当前区域分为两个区域,小于中位数放到左边,大于中位数放到右边。

  2. 重复步骤1,直到没有点可分停止。

查找方法:(查找目标为x)

  1. 在KD 树中自上而下按照建树的规则,找 x 对应的叶子节点,当做最近点,计算当前最近距离。

  2. 从该叶节点开始,从底向上,重复直到根节点:计算当前节点的父节点的切分面到 x 的距离;如果该距离小于当前前最优距离,则在改父节点的另一子区域查找最近点,否则忽略该子区域,直接到上一层查找。

KD 树练习:

数据(2,3)(5,4)(9,6)(4,7)(8,1)(7,2)

查找最近邻近点:(4,5)(4,6)

                                      图2                                                              图3        

注意:

  1. 图2 示:分割维度是依次轮换换着的。 

  2. K>1:我们需要在KD Tree中维护一个数据,只要到分割面距离或者到其他节点的距离小于数组总最大距离,就必须计算,因有可能存在节点去替换数组中的节点。

  3. KD这个数组,我是在前几轮算节点距离时,给填满的。

http://www.lryc.cn/news/448629.html

相关文章:

  • python 安装包 site-packages
  • 大数据-151 Apache Druid 集群模式 配置启动【上篇】 超详细!
  • CentOS8.5.2111(3)实验之DHCP服务器架设
  • 机器学习(4):机器学习项目步骤(一)——定义问题
  • C#中Socket通信常用的方法
  • 【JavaEE】——单例模式引起的多线程安全问题:“饿汉/懒汉”模式,及解决思路和方法(面试高频)
  • huggingface实现中文文本分类
  • 基于python+控制台+txt文档实现学生成绩管理系统(含课程实训报告)
  • Spring Boot 整合MyBatis-Plus 实现多层次树结构的异步加载功能
  • 网络工程师指南:防火墙配置与管理命令大全,零基础入门到精通,收藏这一篇就够了
  • 英特尔终于找到了Raptor Lake处理器崩溃与不稳定问题的根源
  • Shp2pb:Shapefile转Protocol Buffers的高效工具
  • Elasticsearch使用Easy-Es + RestHighLevelClient实现深度分页跳页
  • 基于ASRPRO的语音应答
  • 3D看车汽车案例,车模一键换皮肤,开关车门,轴距,电池功能
  • 数据结构-4.栈与队列
  • 芝士AI写作有什么特色? 大模型支撑,智能改写续写,让写作更轻松
  • 【计网】从零开始学习http协议 --- http的请求与应答
  • 记录linux环境下搭建本地MQTT服务器实现mqtt的ssl加密通讯
  • 基于python+django+vue的电影数据分析及可视化系统
  • HJ50-四则运算:栈的运用、中缀表达式转后缀表达式并计算结果
  • C++编程:实现简单的高精度时间日志记录小程序
  • QQ机器人搭建
  • flink设置保存点和恢复保存点
  • 使用python获取百度一下,热搜TOP数据详情
  • Go conc库学习与使用
  • 大模型prompt先关
  • 尚品汇-自动化部署-Jenkins的安装与环境配置(五十六)
  • 【尚跑】2024铜川红色照金半程马拉松赛,大爬坡152安全完赛
  • WPS中让两列数据合并的方法