Python—KNN分类算法

news2024/11/16 23:52:59

原文: https://zhuanlan.zhihu.com/p/143092725

1. 概述

KNN 可以说是最简单的分类算法之一,同时,它也是最常用的分类算法之一。注意:KNN 算法是有监督学习中的分类算法,它看起来和另一个机器学习算法 K-means 有点像(K-means 是无监督学习算法),但却是有本质区别的。

2. 核心思想

KNN 的全称是 K Nearest Neighbors,意思是 K 个最近的邻居。从这个名字我们就能看出一些 KNN 算法的蛛丝马迹了。K 个最近邻居,毫无疑问,K 的取值肯定是至关重要的,那么最近的邻居又是怎么回事呢?其实,KNN 的原理就是当预测一个新的值 x 的时候,根据它距离最近的 K 个点是什么类别来判断 x 属于哪个类别。听起来有点绕,还是看看图吧。

3. 算法实现

3.1 Sklearn KNN参数概述
要使用 Sklearn KNN 算法进行分类,我们需要先了解 Sklearn KNN 算法的一些基本参数:

4. 算法特点

KNN是一种非参的、惰性的算法模型。什么是非参,什么是惰性呢?

非参的意思并不是说这个算法不需要参数,而是意味着这个模型不会对数据做出任何的假设,与之相对的是线性回归(我们总会假设线性回归是一条直线)。也就是说 KNN 建立的模型结构是根据数据来决定的,这也比较符合现实的情况,毕竟在现实中的情况往往与理论上的假设是不相符的。

惰性又是什么意思呢?想想看,同样是分类算法,逻辑回归需要先对数据进行大量训练(tranning),最后才会得到一个算法模型。而 KNN 算法却不需要,它没有明确的训练数据的过程,或者说这个过程很快。

5. 算法优缺点

5.1优点
简单易用。相比其他算法,KNN 算是比较简洁明了的算法,即使没有很高的数学基础也能搞清楚它的原理。
模型训练时间快,上面说到 KNN 算法是惰性的,这里也就不再过多讲述。
预测效果好。
对异常值不敏感。
5.2 缺点
对内存要求较高,因为该算法存储了所有训练数据。
预测阶段可能很慢。
对不相关的功能和数据规模敏感。

6. KNN 和 K-means比较

前面说到过,KNN 和 K-means 听起来有些像,但本质是有区别的,这里我们就顺便说一下两者的异同吧。

6.1 相同点:
K 值都是重点。
都需要计算平面中点的距离。
6.2 相异点:

KNN 和 K-means 的核心都是通过计算空间中点的距离来实现目的,只是他们的目的是不同的。KNN 的最终目的是分类,而 K-means 的目的是给所有距离相近的点分配一个类别,也就是聚类。

简单说,就是画一个圈,KNN 是让进来圈子里的人变成自己人,K-means 是让原本在圈内的人归成一类人。

至于什么时候应该选择使用 KNN 算法,Sklearn 的这张图给了我们一个答案:

在这里插入图片描述
在这里插入图片描述
简单来说,就是当需要使用分类算法,且数据比较大的时候就可以尝试使用 KNN 算法进行分类了。

补充:

Scikit-learn (Sklearn) 是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regression)、降维(Dimensionality Reduction)、分类(Classfication)、聚类(Clustering)等方法。当我们面临机器学习问题时,便可根据上图来选择相应的方法。Sklearn 具有以下特点:

  • 简单高效的数据挖掘和数据分析工具;
  • 让每个人能够在复杂环境中重复使用;
  • 建立NumPy、Scipy、MatPlotLib 之上。

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

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

相关文章

电路中各种接地的用途和含义

在电路设计中,地这个概念是十分重要的,它是整个电路中的参考地点,同时也是信号回流的路径。 我们经常见到有各种地,比如什么数字地、模拟地、信号地,它们在电路中都有什么含义?都是用在哪里?下面…

和鲸科技携手深圳数据交易所,“数据+数据开发者生态”赋能人工智能产业发展

信息化时代,数据驱动决策的重要性日益凸显。通过利用数据可以深入了解市场需求、客户行为、竞争态势等关键信息,从而制定更为有效的战略和决策。围绕推动数据要素产业发展,近日,深圳数据交易所(以下简称“深数所”&…

SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案

Maven项目的Jar包打包问题-没有主清单属性&&ClassNotFoundException 与 NoClassDefFoundError 文章目录 Maven项目的Jar包打包问题-没有主清单属性&&ClassNotFoundException 与 NoClassDefFoundError1、问题出现1.1、Jar包运行:没有主清单属性解决方…

Kubernetes实战(十二)-使用kubeconfig文件管理多套kubernetes(k8s)集群

1 概述 在生产环境中可能不止有一套kubernetes(k8s)集群,面对多套集群,运维人员可以使用kubeconfig文件管理多套kubernetes(k8s)集群,使用 kubeconfig 文件,可以组织集群、用户和命名空间,还可以定义上下文&#xff0…

[渗透测试学习] CozyHosting - HackTheBox

文章目录 信息搜集 信息搜集 nmap扫描一下,发现存在80端口和22端口 nmap -sV -sC -p- -v --min-rate 1000 10.10.11.230直接访问80端口发现有跳转 那么我们将ip添加到hosts里面,成功访问 观察发现是企业网站,扫描一下没有子域名 那么就扫…

二、如何保证架构的质量、架构前期准备、技术填补与崩溃预防、系统重构

1、如何保证架构的质量 -- 稳定性和健壮性 2、正确的选择是良好的开端 -- 架构前期准备 ① 架构师分类:系统架构师、应用架构师、业务架构师 3、技术填补与崩溃预防 4、系统重构

mysql原理--B+树索引的使用

1.索引的代价 在介绍如何更好的使用索引之前先要了解一下使用这玩意儿的代价,它在空间和时间上都会拖后腿: (1). 空间上的代价 这个是显而易见的,每建立一个索引都要为它建立一棵 B 树,每一棵 B 树的每一个节点都是一个数据页&…

在HarmonyOS上使用ArkUI实现计步器应用

介绍 本篇Codelab使用ArkTS语言实现计步器应用,应用主要包括计步传感器、定位服务和后台任务功能: 通过订阅计步器传感器获取计步器数据,处理后显示。通过订阅位置服务获取位置数据,处理后显示。通过服务开发实现后台任务功能。…

点评项目——秒杀优化

2023.12.11 上一张的秒杀券下单还可以进行优化,先来回顾一下下单流程: 可以看出流程设计多次查询和操作数据库的操作,并且执行顺序是一个线程串行执行,执行性能是比较低的。 优化方案:我们将判断秒杀库存和校验一人一单…

通用的AGI 安全风险

传统安全风险 平台基础设施安全风险 模型与数据层安全风险 应用层安全风险 平台基础设施安全风险 (1)物理攻击:机房管控不到位 (2)网络攻击 (3)计算环境:自身安全漏洞&#xf…

【C++练级之路】【Lv.3】类和对象(中)(没掌握类的6个默认成员函数,那你根本就没学过C++!)

目录 引言一、类的6个默认成员函数二、构造函数(constructor)2.1 引入2.2 概念2.3 特性 三、析构函数(destructor)3.1 概念3.2 特性 四、拷贝构造函数(copy constructor)4.1 概念4.2 特性 五、构造、析构、…

停车场物联网解决方案4G工业路由器应用

随着物联网技术的发展,停车场也实现了数字化、智能化。停车场管理系统是一个集计算机、网络通信、自动控制等技术为一体的综合性系统,它的实施,对加强停车场管理,提高工作效率,提升服务质量和现代化水平,进…

科技云报道:从数据到生成式AI,是该重新思考风险的时候了

科技云报道原创。 OpenAI“宫斗”大戏即将尘埃落定。 自首席执行官Sam Altman突然被董事会宣布遭解雇、董事长兼总裁Greg Brockman辞职;紧接着OpenAI员工以辞职威胁董事会要求Altman回归;再到OpenAI董事会更换成员、Altman回归OpenAI。 表面上看&…

python实战演练之迎接冬至的第一场雪

写在前面 WINTER IS COMING Python实现大雪纷飞的效果,完整代码在文末哦~ 准备开始 WINTER IS COMING Python是一种高级编程语言,Turtle是Python的一个图形化模块,它可以帮助学习者更好地理解编程概念,同时可以进行图形化编程。 …

Gateway全局异常处理及请求响应监控

前言 我们在上一篇文章基于压测进行Feign调优完成的服务间调用的性能调优,此时我们也关注到一个问题,如果我们统一从网关调用服务,但是网关因为某些原因报错或者没有找到服务怎么办呢? 如下所示,笔者通过网关调用acc…

基于轻量级神经网络GhostNet开发构建光伏太阳能电池缺陷图像识别分析系统

工作中经常会使用到轻量级的网络模型来进行开发,所以平时也会常常留意使用和记录,在前面的博文中有过很多相关的实践工作,感兴趣的话可以自行移步阅读即可。 《移动端轻量级模型开发谁更胜一筹,efficientnet、mobilenetv2、mobil…

[足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-3燃烧卡路里-系统分析实例

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-自动控制原理Ch1-3燃烧卡路里-系统分析实例 1. 数学模型2. 比例控制 Proprotional Control 1. 数学模型 2. 比例控制 Proprotional Control

c语言插入排序及希尔排序详解

目录 前言: 插入排序: 希尔排序: 前言: 排序在我们生活中无处不在,比如学生成就排名,商品价格排名等等,所以排序在数据结构的学习中尤为重要,今天就为大家介绍两个经典的排序算法&…

【LeetCode刷题-树】-- 103.二叉树的锯齿形层序遍历

103.二叉树的锯齿形层序遍历 方法:广度优先搜索 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int …

kettle+report designer导出带样式的excel包含多个sheet页

场景介绍: 运用pentaho report designer报表设计器,查询数据库字典表生成带有样式的excel,通过kettle pentaho报表输出组件导出形成数据字典,最终形成的数据字典样式如下图: 案例适用范围: pentaho repor…