当前位置: 首页 > 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实现鸢尾花分类

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

相关文章:

  • 学QT的第一天~
  • 《QT实用小工具·四十九》QT开发的轮播图
  • uniapp 自定义 App启动图
  • 39-1 Web应用防火墙 - WAF应用程序层绕过
  • 【1】STM32·FreeRTOS·新建工程模板【一步到位】
  • linux下sd卡的备份与还原
  • Spring Boot项目中集成Logback作为日志框架-笔记
  • Python_GUI框架 PyQt 与 Pyside6的介绍
  • Github入门
  • 【Web漏洞指南】XSS漏洞详细指南
  • Labels and Databases for Mac:强大的标签与数据库管理工具
  • 视频降噪算法 Meshflow 介绍
  • 情感类ppt素材
  • 专家解读 | NIST网络安全框架(1):框架概览
  • 【NodeMCU实时天气时钟温湿度项目 3】连接SHT30传感器,获取并显示当前环境温湿度数据(I2C)
  • Unity3D DOTween
  • 罗宾斯《管理学》第13版/教材讲解/考研真题视频课程/网课
  • docker-compose启动mysql4.7环境搭建
  • StarryCoding入门教育赛2 题解 C++代码(推荐学习)
  • 【JAVA进阶篇教学】第九篇:MyBatis-Plus用法介绍
  • 实时音视频通信的主要矛盾及解决方法
  • 【Delphi 爬虫库 4】使用封装好的 XML 解析库对 XML 数据进行解析
  • Flask简介
  • 神经网络中的归一化
  • 《从Paxos到Zookeeper》——第四、七章:基本概念及原理
  • 网络演进技术演进:裸纤专线、SDH、MSTP+、OTN、PTN、IP-RAN
  • MMC设备
  • 图片浏览器-PicView
  • 一些零碎小知识
  • 2.2 Java全栈开发前端+后端(全栈工程师进阶之路)-前端框架VUE3-基础-Vue基本语法