机器学习-KNN

news2024/12/27 12:53:03

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.coloradmin.cn/o/2172649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

敏感字段加密 - 华为OD统一考试(E卷)

2024华为OD机试(E卷+D卷+C卷)最新题库【超值优惠】Java/Python/C++合集 题目描述 【敏感字段加密】给定一个由多个命令字组成的命令字符串: 1、字符串长度小于等于127字节,只包含大小写字母,数字,下划线和偶数个双引号; 2、命令字之间以一个或多个下划线 进行分割; 3、可…

Spring Cloud Gateway接入WebSocket:实现实时通信

在现代的微服务架构中,实时通信变得越来越重要。Spring Cloud Gateway作为Spring Cloud生态中的API网关,提供了动态路由、监控、弹性、安全等功能。本文将介绍如何通过Spring Cloud Gateway接入WebSocket,实现服务之间的实时通信。 为什么需…

1. AOSP源码导入到AndroidStudio

1. AOSP源码导入到AndroidStudio 原文地址:http://www.androidcrack.com/index.php/archives/6/ ⚠️ 在执行一下操作前, 请先完整的编译一次系统, 若不清楚如何编译系统. 请访问下面文章 http://www.androidcrack.com/index.php/archives/3/ 1. 生成idegen.jar source build…

Python中流行的开源OCR项目

以下是一些Python中流行的开源OCR项目: PaddleOCR:由百度开发的OCR工具库,支持多种语言的文字识别,包括中英文,同时支持倾斜、竖排等多种方向的文字识别。它提供了超轻量级的PP-OCRv3模型,适合在资源受限的…

EasyExcel使用介绍

EasyExcel使用 1、EasyExcel介绍 1.1 官网介绍 传统操作Excel大多都是利用Apach POI进行操作的,但是POI框架并不完善,使用过程非常繁琐且有较多的缺陷: 动态操作Excel非常繁琐,对于新手来说,很难在短时间内上手;读写时需要占用…

助力企业信息化,开源免费工作流引擎AntFlow推出重榜功能tidb支持,为工作流引擎水平扩展提供无限可能

在现代企业管理中,流程审批的高效性直接影响到工作的流畅度与生产力。选择一款高效的、现代的、合适企业办公特点的流程引擎到头重要。AntFlow是一款结合中国式办公精心打造的、设计上仿钉钉的工作流引擎。后端即可嵌入到现有业务系统,也可以做为独立的流…

打造未来社交:区块链社交DAO的颠覆性开发之路

随着区块链技术的不断发展,去中心化自治组织(DAO)逐渐成为一种创新的社交模式。结合区块链的透明性和不可篡改性,社交DAO为用户提供了一种全新的参与和治理方式,重塑了社交网络的构建与互动方式。本文将探讨区块链社交…

【工具-VMware Workstation-ubuntu】

VMware Workstation-ubuntu ■ ubuntu 和 win11 共享文件夹出现在/mnt/hgfs 目录下。■■■■ ■ ubuntu 和 win11 共享文件夹出现在/mnt/hgfs 目录下。 执行 vmware-hgfsclient 显示有共享文件夹。ls 却查看不到 执行 sudo vmhgfs-fuse .host:/ /mnt/hgfs -o nonempty -o all…

828华为云征文|部署漫画阅读器和管理器 Teemii

828华为云征文|部署漫画阅读器和管理器 Teemii 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 Teemii3.1 Teemii 介绍3.2 Teemii 部署3.3 Teemii 使用 四、总结…

英伟达新显卡RTX 5090和5080曝光,性能差距惊人!涨价已成定局?

你是不是也觉得现在的电脑游戏越来越吃配置了?别急,英伟达即将发布的两款新显卡 RTX 5090 和 RTX 5080 可能会成为你的救星。不过,这两款显卡之间的性能差距可不是一星半点,而且价格可能也会让人咋舌。想知道更多细节吗&#xff1…

Python批量处理客户明细表格数据,挖掘更大价值

批量处理 .xls 数据并进行归类分析以挖掘内在价值,通常涉及以下步骤: 读取数据:使用 pandas 库读取 .xls 文件。数据清洗:处理缺失值、异常值、重复值等。数据转换:对数据进行必要的转换,如日期格式统一、…

debian linux 只安装mysql client

查询系统版本 执行cat /etc/os-release 可以看到是debian11 rootservice-headquarters-hg-self-data-report-844ccf78b-6ls7t:/mysql#cat /etc/os-release PRETTY_NAME"Debian GNU/Linux 11 (bullseye)" NAME"Debian GNU/Linux" VERSION_ID"11&quo…

【MySQL】常见的SQL优化方式(一)

目录 1、插入数据 (1)批量插入 (2)手动提交事务 (3)主键顺序插入 2、主键优化 (1)页分裂 (2)页合并 3、order by 优化 (1)排…

微服务Redis解析部署使用全流程

1、什么是Redis Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 可以理解成一个大容量的map。…

500. 键盘行 哈希表 力扣 Python 难度指数:3

500. 键盘行 已解答 简单 相关标签 相关企业 给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。 美式键盘 中: 第一行由字符 "qwertyuiop" 组成。第二行由字符 "asdfghjkl"…

GIS专业在课余应该学计算机还是遥感?

有网友提问: 绝大数人给出了,强有力的建议,就是冲计算机 1、从学习条件上看本科阶段,学计算机编程,你只需要有台电脑,装一些编程软件,上git上找一些代码,b站找一些教程就可以大学特…

open-resty 服务安装kafka插件

从github下载 作者:程序那点事儿 日期:2023/11/16 22:01 lua-resty-kafka 插件安装 下载代码后直接解压 mkdir -p /usr/local/openresty/modules/ #创建一个目录,存放lua插件cd /usr/local/openresty/modules/ #进入目录rz -y #上传lua插件…

使用Electron将vue项目改桌面程序

1,一个简单的实现案例 # 切换镜像,其他镜像:https://registry.npm.taobao.org/ npm config set registry https://registry.npmmirror.com/ # 推荐使用yarn来管理依赖包,相对于Node.js自带的npm包管理工具来说,它具有…

欧科云链OKLink相约TOKEN2049:更全面、多元与安全

过去几日,OKLink 与全球 Web3 从业者与爱好者们相约狮城。在多场激动人心的活动上分享了我们的产品进展、有关于链上数据的专家观点以及打磨产品的经验。同时也听到了很多来自行业的宝贵声音。跟随我们的脚步,捕捉这充实一周的精彩瞬间: 1、…

网络编程,tcp,守护进程化,前后台任务,bash与shell,会话

上篇,我们讲解了udp服务器与客户端的功能,这篇我们将使用tcp协议来进行编程;tcp服务器相比较与udp要更加稳定与安全,tcp服务器是面向连接的数据传输; 1. tcp服务器与客户端 下面是我实现的完整代码可以辅助下面的讲解…