机器学习_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.mzph.cn/news/834741.shtml

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

相关文章

「短链接教程」如何使用自己的域名生成短链接

在当今数字化时代,短链接的应用越来越广泛。它们不仅能让链接更简洁美观,还便于分享和传播。 但很多时候想用自己的域名生成短链接?搭建短链接平台又比较麻烦,所以,这里以C1N短网址(c1n.cn)为例,介绍下如何…

Java 8的新特性,Lambda表达式、Stream API等

Java 8, 发布于2014年3月,带来了一系列令人兴奋的新特性,其中最显著的包括Lambda表达式、Stream API、新的日期时间API和接口的默认方法与静态方法。这些增强大大提高了Java的表达能力,简化了代码的复杂性,并改进了数据处理能力。…

kingbase R9 高可用集群相关术语介绍

术语介绍 术语 定义 金仓数据库管理系统 (KingbaseES) 人大金仓数据库管理系统,本文指代单机服务版本,下文也被称作单机版。其成员可能包括数据 节点(data node)、备份节点(repo node&am…

自定义函数工具库

一、函数相关 call()& apply()& bind() API说明 call() 语法: call(fn, obj, ...args)功能: 执行fn, 使this为obj, 并将后面的n个参数传给fn(功能等同于函数对象的call方法)apply() 语法: apply(fn, obj, args)功能: 执行fn, 使this为obj, 并将args数组中的元素传给f…

【EI会议|投稿优惠】2024年电力电网与电子通讯国际会议(ICPGEC 2024)

2024 International Conference on Power Grid and Electronic Communication 一、大会信息 会议名称:2024年电力电网与电子通讯国际会议会议简称:ICPGEC 2024收录检索:提交Ei Compendex,CPCI,CNKI,Google Scholar等会议官网:htt…

git cherry-pick命令使用

git cherry-pick 是一个非常实用的Git命令,它允许你将一个或多个提交从一个分支复制并应用到另一个分支上,而不需要进行整个分支的合并。这对于只想将某些特定更改而非整个分支历史引入当前工作的情况非常有用。以下是使用 git cherry-pick 的基本步骤和…

【训练与预测】02 - 完整的模型验证套路

02 - 完整的模型验证套路 模型图 验证一个模型就是指使用已经训练好的模型,然后给它提供输入。 test.py import torch import torchvision from PIL import Imagedevice torch.device("cuda" if torch.cuda.is_available() else "cpu") ima…

【数据结构】栈(Stack)和队列(Queue)

文章目录 栈一、栈的概念及结构二、栈的特点三、栈的实现1.初始化栈2.判断栈空3.入栈4.出栈5.取栈顶元素6.栈的元素个数7.销毁 队列一、队列的概念及结构二、队列的特点三、队列的实现1.初始化2.入队3.出队4.判断队空5.取队头元素6.取队尾元素 总结 栈 一、栈的概念及结构 栈…

政务热线系统让政府服务更接地气

一、引言 随着社会的快速发展和民众需求的日益增长,政府面临着巨大的挑战。政府需要更好地倾听民众的声音,关注民众的关切,并采取相应的措施回应民众的需求。而政府热线系统作为一种重要的沟通渠道,在提升政府服务质量、增强政府…

HR招聘面试测评,如何判断候选人的创新能力?

创新能力代表着一个人的未来发展潜力,创新能力突出的人,未来的上限就可能更高。而对于一个公司而言,一个具有创新能力的员工,会给公司带来新方案,新思路,对公司的长远发展拥有着十分积极的作用。 而在挑选…

Spark云计算平台Databricks使用,SQL

创建workspace:Spark云计算平台Databricks使用,创建workspace和Compute计算集群(Spark集群)-CSDN博客 1 创建schema 选择Calalog,点击Create schema 输入名字,Storage location选择workspace,数…

2024年小沙弥小视频,轻松吸引中老年观众,上手简单,轻松月入了万

利用人工智能工具制作小沙弥主题的抖音内容,已成为网络赚钱的新途径。这个项目主要吸引中老年人群体,尤其是对智慧和人生哲理感兴趣的观众。小沙弥以其温馨且启发性的内容,引起中老年用户的共鸣,为他们提供心灵慰藉。 项 目 地 …

AI工具摸索-关于写作(1)

虽然人工智能工具非常多,但是如果想要成为生产力,能达标的工具仍然非常少,除了最常用的chatgpt,其他的工具真的能达标吗,这篇文章主要就是对比市面上的一些工具, 但我这个人非常执拗,我认为作为生产力工具的功能必然是可以真正帮助我们的,而不是说作为一个写作工具结…

leetcode-189 轮转数组

一、题目描述 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6,7,1,…

PINN物理信息网络 | 一种分层归一化物理信息神经网络hnPINN来解决偏微分方程问题附代码

PINN物理信息网络 | 一种分层归一化物理信息神经网络hnPINN来解决偏微分方程问题附matlab代码 分层归一化物理信息神经网络(Hierarchical Normalized Physics-Informed Neural Network,hnPINN)是一种用于求解偏微分方程问题的神经网络方法。 hnPINN结合了分层网络结构和物…

每日资讯阅读

1.今年荔枝自由没了 今年各大平台荔枝比往年高上许多,去年的妃子笑5元/斤,今年30元/斤,简单总结价格大幅上涨的原因和影响。 1.1 原因 暴雨频繁,产量10年新低 国内荔枝产地主要在我国南部的热带、亚热带森林中,福建、两广、海…

leetcode题目80

删除有序数组的重复项 Ⅱ 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间…

Java笔记(其八)--- 方法(函数)

方法 方法,其实就是C语言中的函数,在写作形式上仅有一点点的区别。 修饰词 返回值类型 函数名(形参){ ... } 例如 package com.su_de_lei; /*** 写一个两数相加的函数*/ public class FunctionCode {public static void main(St…

【Python时序预测系列】一文搞明白时序数据输入到LSTM模型的格式(案例解读)

这是我的第276篇原创文章。 一、引言 前面我介绍了多个方法实现单变量和多变量时序数据的单站点单步预测,好多小伙伴最近问我这个LSTM模型数据的输入的格式是怎么样的,今天我专门写一篇文章来聊一聊这个问题,希望对大家有所启发和帮助。 二、…

Django3 个人开发笔记

查询函数 select_related 内连接 在 Django ORM 中,select_related 是一个查询性能优化工具,用于解决关联对象的查询效率问题。当你有两个通过外键(ForeignKey)或一对一字段(OneToOneField)连接的模型时&…