kNN算法-概述

news2024/11/26 13:33:40

所谓kNN算法就是K-nearest neigbor algorithm。这是似乎是最简单的监督机器学习算法。在训练阶段,kNN算法存储了标签训练样本数据。简单地说,就是调用训练方法时传递给它的标签训练样本会被它存储起来。

kNN算法也叫lazy learning algorithm懒惰学习算法。因为在训练阶段传递给它的训练样本会延迟到预测阶段处理。换句话说,对于kNN算法,训练阶段的方法调用只是为了把训练样本存储到模型中而已,不会做什么具体的训练。这也是由它的算法特点决定。

在预测阶段,kNN算法会找到离查询点(预测点)最近的k个点,然后统计这个k个点的标签,最后以标签最多的结果作为查询结果。

所以kNN算法并没有训练的阶段。所以它计算预测点到样本点的距离的工作,只能够延迟到预测阶段,用来传入的查询点来完成计算。

kNN算法的预测是基于查询点到样本点的比较。所以在预测时,它的所有样本点必须加载到内存中,没有样本点,kNN算法是无法工作的,所以kNN又叫懒惰的基于实例(基于内存)算法。

在继续往下说前,我们先来了解两个概念:离散数据和连续数据,它们都是量化数据的类型,主要的区别在于它们所表示的信息类型。离散数据通常仅仅表示特定事件的信息,而连续数据通常表示随着时间变化的趋势。

  • 离散数据通常是一个确切的数字,我们能够数出来的,例如,一个班级的学生人数,鞋子的尺寸。相反,连续数据通常包括表示一系列信息的可测量值,如房价、股票价格。离散值是一个特定值,而连续值可以是任意值。
  • 在一个特定时间区间中,离散数据是一个常量,而连续数据则有多个不同的值。比如股价在交易时段中,价格就会一直在变化,可能会出现许多不同的价格,这是典型的连续数据。

kNN机器学习可以解决两大类问题:分类问题和回归问题。因为kNN算法会携带着训练数据来做预测,因此当数据集变得很大时,它的性能就会下降得很快。kNN算法一般用于一些简单的推荐系统、模式识别、数据挖掘、金融市场的预测、入侵检测等等。

kNN算法的距离度量问题

这个问题主要是解决哪些数据点离我们要查询的数据点比较近。所以查询数据点与其他数据点的距离是需要先算出来的。这个距离的度量有效地帮助我们形成决策的范围,简单来说就是帮我们找到那k个最近的点。

分类问题

对于分类问题,它是根据多数票来分配类别标签的。首先,用kNN算法构建的模型,要确定它要对什么东西分类,有多少类,然后将这些分类数据构建出来:一个样本数据包括了特征和标签数据,当这些数据给到模型训练时,它们都是一一对应的。这样模型才能基于正确的特征和对应的标签找到一个映射的方法(函数)完成输入到输出的映射。

这个多数票是怎么来的呢?首先kNN中的k代表了我们要从训练数据(kNN算法是一个用训练数据去做预测的算法)中找离我们要预测的数据点(这个数据点,我们只提供特征数据,目的是想让模型告诉我们,它属于哪个分类)最近的k个点,这k个数据点它们的分类可能是不同的,于我们对它们的分类标签进行统计(计票),最终的结果就是以票数多的数据点的分类标签作为这一次的预测结果。

在kNN算法中,我们还可以对于计票结果作一些要求,比如说如果分类类别只有两种的话,可以要求票数必须超过50%,如果是4个分类的话,可以要求票数必须超过25%。

请添加图片描述
在完成一个分类的预测前,我们要用到欧几里德距离来确定预测点与训练数据集中的点的距离,以此找出k个距离最近的点。

回归(Regression)问题

Regression,回归,“the act of going back,回去的行为",所以回归问题就是通过找到预测的数据(没有见过的数据,未知的数据)与过去已知数据的关系,以此来预测当前的数据点。房价预测、股价预测都是很典型的例子。

回归问题和分类问题很类似。区别在于分类问题是用于离散数据的,而回归问题则是用于连续数据的。

我们先说这么多先。后面继续介绍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1805602.html

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

相关文章

分享不用会员免费听歌的软件,可听付费,支持随听随下!

今天来点特别的,给你们带来几款全网免费听歌的神器,让你们的音乐之旅不再有障碍! 现在,找好听的歌越来越像寻宝一样,动不动就得掏腰包。不过别担心,阿星今天就来分享几款好用的免费听歌app,电脑…

Linux——PXE整体流程

1.自己安装一个CentOS 8的服务器 1)手动安装 虚拟硬件配置:2核CPU,4G内存,100G硬盘 2个网卡(一个通外网,一个内部使用) 软件安装:Server GUI 磁盘分区:使用逻辑卷&#…

实践分享:如何用小程序里的小组件做应用开发?

随着移动互联网的快速发展,小程序等轻量级应用平台日益成为用户获取信息和服务的重要渠道。而小组件也在其中扮演了至关重要的角色,不仅能够提升用户的交互体验,还能帮助开发者高效地构建功能丰富、界面美观的小程序。 本文中,我们…

【Uniapp】uniapp微信小程序定义图片地址全局变量

错误写法: main.js Vue.prototype.$imgUrl 图片地址这么写之后 就发现压根不起作用;获取到的是undefined 正确写法: 返回函数,后面可以拼上OSS图片完整路径 Vue.prototype.$imgUrl (url) > {return ("https://地址…

jmeter性能优化之mysql配置

一、连接数据库和grafana 准备:连接好数据库和启动grafana并导入mysql模板 大批量注册、登录、下单等,还有过节像618,双11和数据库交互非常庞大,都会存在数据库的某一张表里面,当用户在登录或者查询某一个界面时,量少的话体现不出来,量很大的时候一定会有卡的现象, 性…

SpringBoot整合RabbitMQ实现消息延迟队列

环境依赖 SpringBoot 3.1.0 JDK 17 前期准备 安装MQ: liunxdockerrabbitmq安装延迟队列插件 实例 实现延迟队列的一种方式是在 RabbitMQ 中使用消息延迟插件,这个插件可以让你在消息发送时设置一个延迟时间,超过这个时间后消息才会被消费者接收到…

期刊影响因子、分区如何查询

查询期刊影响因子、分区等信息就不得不说到的数据库JCI(Journal Citation Indicator)。 JCR 是一个综合性、多学科的期刊分析与评价报告,它客观地统计Web of Science收录期刊所刊载论文的数量、论文参考文献的数量、论文的被引用次数等原始数据,再应用文…

数据库(29)——子查询

概念 SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。 SELECT * FROM t1 WHERE column1 (SELECT column1 FROM t2); 子查询外部语句可以是INSERT/UPDATE/DELETE/SELECT的任何一个。 标量子查询 子查询返回的结果是单个值(数字&#xff…

基于xml的Spring应用(理解spring注入)

目录 问题: 传统Javaweb开发的困惑? 问题: IOC、DI和AOP的思想提出 问题: Spring框架的诞生 1. BeanFactory快速入门 2. ApplicationContext快速入门 3. BeanFactory和ApplicationContext的关系 基于xml的Spring应用 1. SpringBean的…

c# 开发的wpf程序闪退,无法用try catch捕获异常

之前开发的一个程序是c#wpf开发,基于.net framework 4.6.1的,一切都是正常的,但是在我重新装了win11后在程序logo出现后直接闪退,报错 返回值为 -1073740791 (0xc0000409),而且定位到代码时发现是, publi…

AI助教时代:通义千问,让学习效率翻倍?

全文预计1100字左右,预计阅读需要5分钟。 关注AI的朋友知道,在今年5月份以及6月份的开端,AI行业可谓是风生水起,给了我们太多的惊喜和震撼!国内外各家公司纷纷拿出自己憋了一年的产品一决雌雄。 国内有文心一言、通义千…

LeetCode 算法:最大子数组和c++

原题链接🔗:最大子数组和 难度:中等⭐️⭐️ 题目 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组是数组中的一个连续部分。 …

28-LINUX--I/O复用-epoll

一.epoll概述 epoll 是 Linux 特有的 I/O 复用函数。它在实现和使用上与 select、poll 有很大差异。首 先,epoll 使用一组函数来完成任务,而不是单个函数。其次,epoll 把用户关心的文件描述 符上的事件放在内核里的一个事件表中。从而无需像…

计算机组成原理之指令格式

1、指令的定义 零地址指令: 1、不需要操作数,如空操作、停机、关中断等指令。 2、堆栈计算机,两个操作数隐藏在栈顶和此栈顶,取两个操作数,并运算的结果后重新压回栈顶。 一地址指令: 二、三地址指令 四…

C# WPF入门学习主线篇(十六)—— Grid布局容器

C# WPF入门学习主线篇(十六)—— Grid布局容器 欢迎来到C# WPF入门学习系列的第十六篇。在前几篇文章中,我们已经探讨了 Canvas、StackPanel、WrapPanel 和 DockPanel 布局容器及其使用方法。本篇博客将介绍另一种功能强大且灵活的布局容器—…

Spring AI 第二讲 之 Chat Model API 第四节Amazon Bedrock

Amazon Bedrock是一项托管服务,通过统一的应用程序接口提供来自不同人工智能提供商的基础模型。 Spring AI 通过实现 Spring 接口 ChatModel、StreamingChatModel 和 EmbeddingModel,支持亚马逊 Bedrock 提供的所有聊天和嵌入式 AI 模型。 此外&#xf…

【Python报错】已解决TypeError: ufunc ‘isnan’ not supported for the input types

成功解决“TypeError: ufunc ‘isnan’ not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ‘‘safe’’”错误的全面指南 在使用NumPy等科学计算库时,我们经常会遇到各种各样…

pytorch-数据增强

目录 1. Flip翻转2. Rotate旋转3. scale缩放4. crop裁剪5. 总结6. 完整代码 1. Flip翻转 上图中做了随机水平翻转和随机垂直翻转&#xff0c;翻转完成后转化成tensor 2. Rotate旋转 上图中作了2次旋转第一次旋转角度在-15<0<15范围内&#xff0c;随机出一个角度&#xf…

创建google cloud storage notification 的权限问题

问题 根据google 的文档&#xff1a; https://cloud.google.com/storage/docs/reporting-changes#command-line 明确表示&#xff0c; 要创建storage notificaiton &#xff0c; 创建者(or service account) 只需要bucket 和 pubsub admin roles 但是实际上我在公司尝试为1个…

【AI 高效问答系统】机器阅读理解实战内容

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三连支…