kNN算法-概述
所谓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,回去的行为",所以回归问题就是通过找到预测的数据(没有见过的数据,未知的数据)与过去已知数据的关系,以此来预测当前的数据点。房价预测、股价预测都是很典型的例子。
回归问题和分类问题很类似。区别在于分类问题是用于离散数据的,而回归问题则是用于连续数据的。
我们先说这么多先。后面继续介绍。
相关文章:
kNN算法-概述
所谓kNN算法就是K-nearest neigbor algorithm。这是似乎是最简单的监督机器学习算法。在训练阶段,kNN算法存储了标签训练样本数据。简单地说,就是调用训练方法时传递给它的标签训练样本会被它存储起来。 kNN算法也叫lazy learning algorithm懒惰学习算法…...
富格林:曝光纠正出金亏损陋习
富格林悉知,虽然现货黄金市场看似变化无常,在操作方向上依旧是有迹可循的,投资者需要了解曝光的专业经验纠正陋习阻止出金亏损。要获得优质的黄金投资出金效果,就需要在明确现货黄金操作技巧的前提下,只有规范遵循已曝…...
怎么用微信小程序实现远程控制空调
怎么用微信小程序实现远程控制空调呢? 本文描述了使用微信小程序调用HTTP接口,实现控制空调,通过不同规格的通断器,来控制不同功率的空调的电源。 可选用产品:可根据实际场景需求,选择对应的规格 序号设备…...
ES5/ES6 的继承除了写法以外还有什么区别?
一、主要区别 ES5 的继承实质上是先创建子类的实例对象, 然后再将父类的方法添加 到 this 上(Parent.apply(this)) . ES6 的继承机制完全不同, 实质上是先创建父类的实例对象 this(所以必 须先调用父类的 super()方法…...
LeetCode 第401场周赛个人题解
100325. 找出 K 秒后拿着球的孩子 原题链接 100325. 找出 K 秒后拿着球的孩子 思路分析 数据很小,暴力或者数学方法都行 数学方法就是对 n - 1做带余除法,看跑了奇数还是偶数趟,余数如何,确定位置 时间复杂度:O(…...
C#面:请解释web.config⽂件中的重要节点
在C#中,web.config文件是一个XML格式的配置文件,用于配置ASP.NET应用程序的各种设置。web.config文件中包含了许多重要的节点,下面是一些常见的重要节点及其作用: <configuration>节点:web.config文件的根节点&…...
30分钟吃掉 Pytorch 转 onnx
节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学. 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总合集&…...
KEIL5如何打开KEIL4的GD工程
GD官方提供的很多KEIL例程为KIEL4的版本,读者使用的时候可能会碰到使用KEIL5打开KEIL4的工程会报错以及无法找到芯片选型的问题,具体表现如下图所示。 我们该怎么办呢? 下面为大家介绍两种方法: 第一种方法是在keil4的工程后缀u…...
大前端技术分类
1 基础 2 语言 3 类库 4 框架 5 跨栈 6 架构 7 领域 7.1 中后台 7.2 跨平台 7.3 可视化 7.4 智能化 7.5 工程化 7.5.1 规范化 7.5.2 流程化 —— 前端工程化工具系列 7.5.3 模板化 7.5.4 自动化 7.5.5 平台化 7.6 其他 7.6.1 音视频 7.6.2 Web3 7.6.3 区块…...
Android AAudio——C API控制音频流(四)
上一篇文章我们介绍了 C API 中音频流的创建流程,以及打开音频流操作,这里我们再来看一下音频流的其他操作流程 一、音频流操作介绍 1、操作流程图 下图是状态变化流程图,虚线框表示瞬时状态,实线框表示稳定状态。 2、操作函数 上图中主要包含下面几个操作函数: aaudio…...
万能嗅探:视频号下载神器
万能嗅探是一款比较好用资源嗅探软件,界面干净,可以抓取浏览器的网页,不过想必各位主要用来抓取视频号,下面是使用方法。 使用方法 打开万能嗅探客户端,然后打开浏览器,产生网络请求即可,看看…...
python数据分析-ZET财务数据分析
一、公司背景 中兴通讯股份有限公司是一家总部位于中国深圳的跨国公司,致力于为全球客户提供通信设备和解决方案。公司成立于1985年,自成立以来一直致力于为客户提供创新的通信技术和服务。中兴通讯的业务涵盖多个领域,包括但不限于高端路由…...
Leetcode学习
回文数 反转一半数字 第一个想法是将数字转换为字符串,并检查字符串是否为回文。 但是,这需要额外的非常量空间来创建问题描述中所不允许的字符串。 第二个想法是将数字本身反转,然后将反转的数字与原始数字比较,如果它们是相同…...
python 列出面板数据所有变量名
在Python中,处理面板数据(Panel Data)通常使用pandas库,特别是当数据以DataFrame或Panel(尽管Panel在较新版本的pandas中已被弃用)的形式存在时。然而,由于Panel的弃用,现代做法通常…...
知乎网站只让知乎用户看文章,普通人看不了
知乎默认不显示全部文章,需要点击展开阅读全文 然而点击后却要登录,这意味着普通人看不了博主写的文章,只有成为知乎用户才有权力查看文章。我想这不是知乎创作者希望的情况,他们写文章肯定是希望所有人都能看到。 这个网站篡改…...
web前端的实习记录:探索、挑战与成长
web前端的实习记录:探索、挑战与成长 踏入web前端实习的旅程,我怀揣着对未知的好奇与对技术的渴望,开始了一段全新的学习与实践。在这个过程中,我经历了四个方面的技术探索,五个方面的挑战应对,六个方面的…...
正则表达式的详解带你认识正则表达式的意义
前言 我们都知道协议通常通过添加固定的字符、报头、特定的数字等来定义数据的结构和格式。将正确的信息提取出来是十分重要的,而正则表达式可以用来描述和匹配这些固定的结构,从而提取出所需的信息。并且正则表达式还可以处理大量复杂的字符串。这篇…...
中国现在最厉害的书法家颜廷利:东方伟大思想家哲学家教育家
中国书法界名人颜廷利教授,一位在21世纪东方哲学、科学界及当代中国教育领域内具有深远影响力的泰斗级人物,不仅以其深厚的国学修为和对易经姓名学的独到见解著称,还因其选择在济南市历城区的龙泉大街以及天桥区的凤凰山庄与泉星小区等地设立…...
OS常用操作
目录 1 文件和目录操作 1. 1 创建目录 1.2 删除目录 1.3 列出目录内容 1.4 删除文件 1.5 打开和关闭文件描述符 1.6 修改文件权限 1.7 获取和设置文件属性 2 路径操作 2.1 获取当前工作目录 2.2 改变工作目录 2.3 路径操作 2.4 添加 Python 的模块搜索路径列表 3 …...
【IC验证】03 UVM
...
Jira的原理及应用详解(六)
本系列文章简介: 在当今快速发展的软件开发和项目管理领域,有效的团队协作和精确的项目进度追踪是确保项目成功的关键。Jira作为一款广受欢迎的项目和问题追踪工具,以其强大的功能、灵活的定制性以及卓越的用户体验,赢得了全球众多…...
Linux进程间通信之System V
目录 认识system V: system V共享内存: 共享内存的基本原理: 共享内存的数据结构: 共享内存的建立与释放: 共享内存的建立: 共享内存的释放: 共享内存的关联: 共享内存的去关联…...
力扣hot100:394. 字符串解码(递归/括号匹配,字符串之间相对顺序)
LeetCode:394. 字符串解码 本题容易想到用递归处理,在写递归时主要是需要明确自己的递归函数的定义。 不过我们也可以利用括号匹配的方式使用栈进行处理。 1、递归 定义递归函数string GetString(string & s,int & i); 表示处理处理整个numbe…...
【C++11】多线程常用知识
知识体系 thread C++ thread中最常用的两个函数是join和detach,怎么选择呢,简单来说,如果希望等待线程结束,用join,如果希望异步执行,且不等待执行结果,那么就用detach;thread_local可以简单理解为一个线程级别的全局变量;线程id在调试多线程程序时是非常有用的东西;…...
详解linux设备下的/dev/null
/dev/zero是一个特殊的设备文件,它在Linux系统中通常被用来生成无限数量的零数据流。 这个设备文件位于/dev目录下,它不代表任何实际的硬件设备,而是一个虚拟设备。 当从/dev/zero设备中读取数据时,会得到无限数量的零字节&…...
GPT-4 Turbo 和 GPT-4 的区别
引言 人工智能(AI)领域的发展日新月异,OpenAI 的 GPT 系列模型一直是这一领域的佼佼者。GPT-4 和 GPT-4 Turbo 是目前市场上最先进的语言模型之一。本文将详细探讨 GPT-4 和 GPT-4 Turbo 之间的区别,以帮助用户更好地理解和选择适…...
基于小波多分辨分析的一维时间序列信号趋势检测与去除(MATLAB R2018a)
小波最开始是数学上提出的概念,并且在纯数学的王国里存在了一个世纪之久。最开始是为了弥补傅里叶分析的缺陷,即傅里叶级数发散的问题,并寻找出能够代替傅里叶分析的方法。从最早的一些艰难的探索开始直到慢慢发展成为一套完整系统的小波分析…...
Linux RedHat7.6操作系统的xfs格式化后,mount不生效
Linux RedHat7.6操作系统的xfs格式化后,mount不生效 问题现象 最近在准备测试环境的过程中,当对xfs文件系统格式化后,mount磁盘,通过df -h命令查看,未显示挂载磁盘信息 [rootZHZXLxjspo0db003 ~]# mount /dev/datavg/datavg-lv_data /data…...
高并发ping多台主机IP
简介 社区或者是大型公司往往有成千上万或者几百台设备,保持设备始终在线对网络运维人员来说至关重要,然而一个一个登录检查,或者一个一个ping并不明智,累人且效率极低,并出错率高。花钱买检测服务当我没说。 shell编…...
03 Linux 内核数据结构
Linux kernel 有四种重要的数据结构:链表、队列、映射、二叉树。普通驱动开发者只需要掌握链表和队列即可。 链表和队列 Linux 内核都有完整的实现,我们不需要深究其实现原理,只需要会使用 API 接口即可。 1、链表 链表是 Linux 内核中最简单、最普通的数据结构。链表是一…...
免费行情软件app网站大全下载苹果/google搜索关键词热度
矩阵图即用一张图绘制多个变量之间的关系,数据挖掘中常用于初期数据探索;本文介绍python中seaborn.pairplot(傻瓜版)和seaborn.PairGrid(更个性化版)绘制矩阵图本文内容速览目录1、绘图数据准备还是使用鸢尾花iris数据集#导入本帖要用到的库,…...
哈尔滨做网站需要多少钱/网络营销策略的制定
在Java应用中进行集合对象间的转换是非常常见的事情,有时候在处理某些任务时选择一种好的数据结构往往会起到事半功倍的作用,因此熟悉每种数据结构并知道其特点对于程序员来说是非常重要的,而只知道这些是不够的,有时候你需要一个…...
庆阳市人大常委会网站建设/百度推广助手官方下载
闲庭信步聊前端 - 漫谈XSS什么是XSS?众所周知XSS是Cross-Site Scripting(跨站脚本攻击)的简称,但是英文的缩写明明是CSS为什么叫XSS呢?———历史遗留问题,因为CSS层叠样式表(Cascading Style Sheets)已经被大家所熟知,…...
微信小程序在哪里找到/郑州seo关键词优化公司
1、问题描述:如果想在编辑markdown中实现下图效果 该怎么敲内容呢? 2、 问题解决: 小黑点可以通过减号加空格的方式敲出,其实空心的点也是减号加空格只是减号前面要多敲三个空格,当然空格多于三个也是可以的。 …...
时时彩网站开发出售/百度获客平台
判断插入值是否重复:事务和存储过程优化CREATE PROCEDURE IR_rb_User_UpdateUser( UserID int, Name nvarchar(50), Email nvarchar(100), Password nvarchar(20), RoleID int, iSuccess int output)ASset iSu…...
顺德网站建设基本流程/武汉网站开发公司
--> Servelet: 用于接收请求(客户端,浏览器),做出响应的,服务器端的,java类 --> ServletLogin -- Web项目服务器响应的Java实现 package com.dragon.java.servlet;import java.io.IOException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException…...