机器学习_KNN算法

机器学习_KNN算法

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

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

文章目录

  • 机器学习_KNN算法
    • [1. KNN算法的基本步骤](#1. KNN算法的基本步骤)
    • [2. KNN算法的关键参数](#2. KNN算法的关键参数)
    • [3. KNN算法的优缺点](#3. KNN算法的优缺点)
    • [4. KNN算法的应用场景](#4. KNN算法的应用场景)
    • [5. 示例:鸢尾花分类](#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=1∑m(xi−yi)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=∣x1−y1∣+∣x2−y2∣+...+∣xn−yn∣

    • 切比雪夫距离:

      对于两个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(∣x1−y1∣,∣x2−y2∣,...,∣xn−yn∣)

3. KNN算法的优缺点

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

4. KNN算法的应用场景

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

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

5. 示例:鸢尾花分类

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

相关推荐
火云牌神2 分钟前
本地大模型编程实战(38)实现一个通用的大模型客户端
人工智能·后端
无限进步_14 分钟前
深入理解 C/C++ 内存管理:从内存布局到动态分配
c语言·c++·windows·git·算法·github·visual studio
半吊子全栈工匠21 分钟前
如何接手一个数据团队?
大数据·人工智能
后端研发Marion27 分钟前
【JoyAgent-JDGenie 全栈多智能体系统技术文档】
人工智能·大模型·智能体·langflow·joyagent
多则惑少则明28 分钟前
AI测试、大模型测试(一)
人工智能·ai测试·大模型测试
长安er28 分钟前
LeetCode 34排序数组中查找元素的第一个和最后一个位置-二分查找
数据结构·算法·leetcode·二分查找·力扣
灰灰勇闯IT38 分钟前
飞桨平台实战:从零训练中文文本分类模型,附完整开发流程
人工智能·分类·paddlepaddle
新智元41 分钟前
GPT-5.2 提前泄露?今夜,OpenAI 要拿 Gemini 3 祭天!
人工智能·openai
catchadmin42 分钟前
用 Laravel 官方 AI 工具提升开发效率 效率提示数倍
人工智能·php·laravel
李小星同志1 小时前
DPO,PPO,GRPO的学习
人工智能·深度学习·学习