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

机器学习_KNN算法

机器学习_KNN算法

K-近邻(K-Nearest Neighbors,简称KNN)算法是一种基本的机器学习分类和回归算法

其核心思想是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别

文章目录

  • 机器学习_KNN算法
    • 1. KNN算法的基本步骤
    • 2. KNN算法的关键参数
    • 3. KNN算法的优缺点
    • 4. KNN算法的应用场景
    • 5. 示例:鸢尾花分类

1. KNN算法的基本步骤

  • 计算距离:对于给定数据集中的每一个数据点,计算其与待分类数据点的距离(如欧氏距离、曼哈顿距离等)
  • 找到k个近邻:基于计算出的距离,找出与待分类数据点最近的k个数据点
  • 确定类别
    • 若为分类问题,根据这k个近邻的类别,通过多数投票(majority voting)的方式来预测待分类数据点的类别
    • 若为回归问题,待分类数据点的预测值通常是这k个近邻的平均值、中位数或其他统计量

2. KNN算法的关键参数

  • k值的选择:k值的选择对KNN算法的性能有很大的影响。较小的k值可能导致过拟合(即模型对训练数据过于敏感),而较大的k值可能导致欠拟合(即模型过于简单,无法捕捉到数据的细微变化);在实际应用中,通常通过交叉验证等方法来确定最优的k值

  • 距离度量:1

    • 欧式距离:

      对于两个数据点 ( x ) 和 ( y ),它们在 ( m ) 维空间中的坐标分别是 ( (x_1, x_2, …, x_m) ) 和 ( (y_1, y_2, …, y_m) ),则它们之间的欧氏距离 ( d(x, y) ) 定义为:
      d ( x , y ) = ∑ i = 1 m ( x i − y i ) 2 d(x, y) = \sqrt{\sum_{i=1}^{m} (x_i - y_i)^2} d(x,y)=i=1m(xiyi)2

    • 曼哈顿距离:

      对于n维空间中的两个点A(x1, x2, …, xn)和B(y1, y2, …, yn),曼哈顿距离的计算公式为:
      d = ∣ x 1 − y 1 ∣ + ∣ x 2 − y 2 ∣ + . . . + ∣ x n − y n ∣ d = |x1 - y1| + |x2 - y2| + ... + |xn - yn| d=x1y1∣+x2y2∣+...+xnyn

    • 切比雪夫距离:

      对于两个n维向量A(x1, x2, …, xn)和B(y1, y2, …, yn),它们之间的切比雪夫距离的计算公式为:
      d = m a x ( ∣ x 1 − y 1 ∣ , ∣ x 2 − y 2 ∣ , . . . , ∣ x n − y n ∣ ) d = max(|x1 - y1|, |x2 - y2|, ..., |xn - yn|) d=max(x1y1∣,x2y2∣,...,xnyn)

3. KNN算法的优缺点

  • 优点:
    • 原理简单,易于理解和实现
    • 无需估计参数,无需训练
    • 适合对稀有事件进行分类
  • 缺点
    • 当数据集很大时,计算量大,存储开销大
    • 对数据的局部结构非常敏感
    • 在决策分类时,k值的选取对结果的影响很大
    • 可解释性较差,无法给出像决策树那样的规则

4. KNN算法的应用场景

KNN算法由于其简单性和有效性,在许多领域都有广泛的应用,如文本分类、图像识别、推荐系统等

然而,由于其计算复杂度和对局部结构的敏感性,KNN算法可能不适用于大规模数据集或高维数据集;在这些情况下,可能需要使用更复杂的机器学习算法或降维技术来处理数据

5. 示例:鸢尾花分类

详见博主另一篇博客:KNN、NB、SVM实现鸢尾花分类

相关文章:

机器学习_KNN算法

机器学习_KNN算法 K-近邻(K-Nearest Neighbors,简称KNN)算法是一种基本的机器学习分类和回归算法 其核心思想是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别…...

学QT的第一天~

#include "mywidget.h" MyWidget::MyWidget(QWidget *parent) : QWidget(parent) { //窗口相关设置// this->resize(427,330); this->setFixedSize(427,330); //设置图标 this->setWindowIcon(QIcon("C:\\Users\\Admin\\Desktop\\pictrue\\dahz.jpg&q…...

《QT实用小工具·四十九》QT开发的轮播图

1、概述 源码放在文章末尾 该项目实现了界面轮播图的效果,包含如下特点: 左右轮播 鼠标悬浮切换,无需点击 自动定时轮播 自动裁剪和缩放不同尺寸图片 任意添加、插入、删除 单击事件,支持索引和自定义文本 界面美观,圆…...

uniapp 自定义 App启动图

由于uniapp默认的启动界面太过普通 所以需要自定义个启动图 普通的图片不可以过不了苹果的审核 所以使用storyboard启动图 生成 storyboard 的网站:初雪云-提供一站式App上传发布解决方案...

39-1 Web应用防火墙 - WAF应用程序层绕过

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、双重URL编码绕过 什么是URL编码 URL编码是一种将特殊字符转为%加上其ASCII值的方式,以确保在URL中传输时不会被误解或导致错误。例如,字母"s"的URL编码是"…...

【1】STM32·FreeRTOS·新建工程模板【一步到位】

目录 一、获取FreeRTOS源码 二、FreeRTOS源码简介 2.1、FreeRTOS源码文件内容 2.2、FreeRTOS内核 2.3、Source文件夹 2.4、portable文件夹 三、FreeRTOS手把手移植 3.1、FreeRTOS移植准备 3.2、FreeRTOS移植步骤 3.2.1、将 FreeRTOS 源码添加至基础工程、头文件路径等…...

linux下sd卡的备份与还原

在Ubuntu上制作SD卡备份镜像,你可以使用dd命令。以下是一个基本的步骤和示例代码: 插入SD卡到电脑。确定SD卡设备路径,使用lsblk或sudo fdisk -l命令。确定备份镜像文件的路径。使用dd命令制作备份。 示例代码: bash# 查看连接的…...

Spring Boot项目中集成Logback作为日志框架-笔记

在Spring Boot项目中集成Logback作为日志框架是一个标准做法,因为Spring Boot默认就使用Logback作为日志系统。以下是集成Logback的步骤: 1. 默认集成 Spring Boot会自动配置Logback,所以通常情况下,你不需要添加任何额外的依赖或…...

Python_GUI框架 PyQt 与 Pyside6的介绍

Python_GUI框架 PyQt 与 Pyside6的介绍 一、简介 在Python的GUI(图形用户界面)开发领域,PyQt和PySide6是两个非常重要的工具包。它们都基于Qt库,为Python开发者提供了丰富的GUI组件和强大的功能。当然Python也有一些其他的GUI工…...

Github入门

GitHub 入门指南:从零开始学习使用 GitHub GitHub 是全球最大的代码托管平台之一,不仅是开发者们交流与协作的重要场所,也是学习与分享优秀代码的宝库。无论你是一位新手开发者还是经验丰富的专家,GitHub 都是你必须掌握的利器之…...

【Web漏洞指南】XSS漏洞详细指南

【Web漏洞指南】XSS漏洞详细指南 概述XSS的三种类型执行任意 JS 代码的方式在原始HTML中注入绕过手法在 HTML标记内注入绕过手法在JavaScript代码中注入绕过手法其他绕过手法XSS常见有效载荷检索Cookies窃取页面内容键盘记录器查找内部IP地址端口扫描器自动填充密码捕获窃取 Po…...

Labels and Databases for Mac:强大的标签与数据库管理工具

Labels and Databases for Mac是一款集标签制作与数据库管理于一体的强大工具,专为Mac用户打造,旨在提供高效、便捷的标签制作与数据管理体验。 这款软件拥有丰富的内置标签格式,用户可轻松创建各种标签、信封和卡片,满足个性化需…...

视频降噪算法 Meshflow 介绍

介绍 Meshflow 视频降噪算法来自于 2017 年电子科技大学一篇高质量论文。 该论文提出了一个新的运动模型MeshFlow,它是一个空间平滑的稀疏运动场 (spatially smooth sparse motion field),其运动矢量 (motion vectors) 仅在网格顶点 (mesh vertexes) 处…...

情感类ppt素材

小清新手绘插画风毕业季毕业相册同学录画册纪念册PPT下载 - 觅知网这是一张关于清新毕业相册的PPT模板,清新风格设计,加上风为装饰元素,包含毕业相册、毕业季、毕业、同学、纪念等主题内容,也可用作毕业相册PPT、毕业季PPT、毕业P…...

专家解读 | NIST网络安全框架(1):框架概览

随 着信息技术的快速发展,组织面临着越来越严峻的网络安全挑战。NIST网络安全框架(NIST Cybersecurity Framework,CSF)是一个灵活的综合性指南,旨在协助各类组织建立、改进和管理网络安全策略,以加强网络安…...

【NodeMCU实时天气时钟温湿度项目 3】连接SHT30传感器,获取并显示当前环境温湿度数据(I2C)

今天,我们开始第三个专题:连接SHT30温湿度传感器模块,获取当前环境实时温湿度数据,并显示在1.3寸TFT液晶显示屏上。 第一专题内容,请参考 【NodeMCU实时天气时钟温湿度项目 1】连接点亮SPI-TFT屏幕和UI布局设计…...

Unity3D DOTween

简单介绍一下 DOTween 插件的使用。 导入插件 先到 Asset Store 获取 DOTween 插件,然后在 Package Manager 的 My Assets 中搜索,下载并导入插件。 导入后,会自动弹出一个窗口,提示需要先对插件进行配置。 点击上图中的按钮&am…...

罗宾斯《管理学》第13版/教材讲解/考研真题视频课程/网课

本课程是罗宾斯《管理学》(第13版)精讲班,为了帮助参加研究生招生考试指定考研参考书目为罗宾斯《管理学》(第13版)的考生复习专业课,我们根据教材和名校考研真题的命题规律精心讲解教材章节内容。 序号名…...

docker-compose启动mysql4.7环境搭建

注意: 下面挂载的目录需要自己创建文件夹比如: /home/dockerInfo/composeInfo/volumes/mysqlVolume/var/log/mysql(数据文件) /home/dockerInfo/composeInfo/volumes/mysqlVolume/var/lib/mysql(日志文件)…...

StarryCoding入门教育赛2 题解 C++代码(推荐学习)

比赛地址:https://www.starrycoding.com/contest/6 比赛介绍 系列赛名称:StarryCoding 入门教育赛难度:语法~较低时长: 1.5 1.5 1.5小时比赛时间:约每2-3天一场,一般为晚上18:30~20:00赛后题解&#xff1…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...