KNN算法及其MATLAB代码

article/2025/9/7 3:49:16

一、KNN算法原理

1.算法概述

k近邻(k-Nearest Neighbor,简称kNN)学习是一种常用的监督学习方法,其工作机制非常简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个"邻居"的信息来进行预测。通常,在分类任务中可使用"投票法"即选择这k个样本中出现最多的类别标记作为预测结果;在回归任务中时使用"平均法",即将这k个样本的实值输出标记的平均值作为预测结果;还可基于距离远近进行加权平均或加权投票,距离越近的样本权重越大。

kNN算法的指导思想是“近朱者赤,近墨者黑”,由你的邻居来推断出你的类别。

以二分类为例,k近邻分类示意图如图1所示。

图1 k近邻分类示意图

 

虚线显示出等距线;测试样本在k=1或k=5时被判别为正例,k=3时被判别为负例。

2.算法的计算步骤

1)算距离:给定测试对象,计算它与训练集中每个对象的距离;

2)找邻居:圈定距离最近的k个训练对象,作为测试对象的近邻;

3)做分类:根据这k个近邻归属的主要类别,来对测试对象分类。

3.算法的优缺点

优点:简单,易于理解,易于实现,无需估计参数,无需训练;适合对稀有事件进行分类;特别适合于多分类问题(multi-modal,对象具有多个类别标签)。

缺点:懒惰算法,对测试样本分类时的计算量大,内存开销大,评分慢;可解释性较差,无法给出决策树那样的规则。

4.算法存在的常见问题

1)K值设定的大小

k太小,分类结果易受噪声点影响;k太大,近邻中又可能包含太多的其它类别的点。

k值通常是采用交叉检验来确定(以k=1为基准)

经验规则:k一般低于训练样本数的平方根。

2)类别判定

投票法没有考虑近邻的距离的远近,距离更近的近邻也许更应该决定最终的分类,所以采用加权投票法(对距离加权,距离越近的样本权重越大)。

3)选择合适的距离衡量

高维度对距离衡量的影响:当变量数越多,欧式距离的区分能力就越差;

变量值域对距离的影响:值域越大的变量常常会在距离计算中占据主导作用,因此应先对变量进行标准化。

常用的距离度量公式如图2所示。

图2 常用的距离度量公式

 

4)训练样本是否要一视同仁

在训练集中,有些样本可能是更值得依赖的,可以给不同的样本施加不同的权重,加强依赖样本的权重,降低不可信赖样本的影响。

5)性能问题

KNN是一种懒惰算法,平时不好好学习,考试(对测试样本分类)时才临阵磨枪(临时去找k个近邻);

懒惰的后果:构造模型很简单,但在对测试样本分类时系统开销大,因为要扫描全部训练样本并计算距离;

已经有一些方法提高计算的效率,例如压缩训练样本量等。

6)能否大幅减少训练样本量,同时又保持分类精度?

浓缩技术(condensing)

编辑技术(editing)

二、KNN算法的MATLAB代码实现

对4组不同的信号分别采集20组,总共80组,然后经过特征提取(特征数量为8个),得到80x8的矩阵。

划分数据集:将64组数据作为训练数据,16组数据作为测试数据,4类信号在训练集和测试集的数量比例相同,将训练集和测试集整体归一化,再分别作为KNN的输入。

源程序是利用KNN算法对训练集和测试集整体归一化后的测试数据进行分类,得到分类准确率。

名称:基于MATLAB的KNN算法实现多分类(类别判定采用投票法)。

源代码的博客地址:https://download.csdn.net/download/weixin_45317919/12850227

 

参考文献

[1]周志华.机器学习[M].北京:清华大学出版社,2017:225.

[2]KNN算法理解.

https://blog.csdn.net/jmydream/article/details/8644004

[3]齐兴敏.基于PCA的人脸识别技术的研究[D].武汉:武汉理工大学,2007.


http://chatgpt.dhexx.cn/article/1S4Ug91C.shtml

相关文章

kNN算法解析及应用【内附详细代码和数据集】

首先,我们需要了解什么是“kNN” kNN英文全称k Nearest Neighbor,即k近邻算法。 用途:分类问题kNN的工作原理:事先有一个有标签的样本数据集,然后输入没有标签的新数据后,将新数据的每个特征和样本集里的数…

KNN算法介绍及代码实现

k-近邻法简介 k近邻法(k-nearest neighbor, k-NN)是1967年由Cover T和Hart P提出的一种基本分类与回归方法。它的工作原理是:存在一个样本数据集合,也称作为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一个数…

机器学习——KNN及代码实现

KNN KNN即k-nearest neighbor(k近邻法),多应用于分类问题。 k近邻法的输入为实例的特征向量,对应于特征空间中的点。输出为实例的类别。 K近邻法原理 给定一个训练数据集,对新的输入数据,在训练数据集中找到与该实例最邻近的k个…

KNN算法及其改进

KNN算法优缺点 优点 (1) 精度高 (2) 对异常值不敏感:某个异常值对整个结果不造成影响; (3) 无数据输入假定:无数据的独立性等假设;缺点 (1) 计算复杂度高:因为要计算的点需要与所有点计算距离,所以复杂度很…

机器学习算法-KNN代码实现

机器学习算法-KNN代码实现 一、KNN算法初步理解二、代码实现1.数据集处理2.创建model3.可视化 总结 一、KNN算法初步理解 统计学习方法书上的解释:给定一个训练数据集,对于新的输入实例,在训练数据集中找到与该实例最邻近的k个实例&#xff…

【数据挖掘基础】——KNN算法+sklearn代码实现(6)

🤵‍♂️ 个人主页:@Lingxw_w的个人主页 ✍🏻作者简介:计算机科学与技术研究生在读 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 介绍算法的例子 KNN算法原理

KNN的优化算法1:距离加权

参考文章:https://www.cnblogs.com/bigmonkey/p/7387943.html 对参考文章中最后一部分说的有问题的地方进行了修改。 权值加权:为每个点的距离增加一个权重,使得距离近的点可以得到更大的权重,在此描述如何加权。 反函数 该方法最…

机器学习之深入理解K-means、与KNN算法区别及其代码实现

K-means方法是一种非监督学习的算法,它解决的是聚类问题。 1、算法简介:K-means方法是聚类中的经典算法,数据挖掘十大经典算法之一;算法接受参数k,然后将事先输入的n个数据对象划分为k个聚类以便使得所获得的聚类满足聚类中的对象…

KNN算法代码实现

原理: KNN 算法也叫K近邻算法。假设给定一个训练数据集,其中的实例类别已定。它是通过找到一个数据集中与目标数据最近的K个邻居,然后通过多数表决等方式来预测目标数据的分类结果进行预测。 三要素: 距离度量、K值、分类决策规…

KNN中的优化算法KD-tree

我们知道KNN是基于距离的一个简单分类算法,熟悉KNN的都知道,我们要不断计算两个样本点之间的距离,但是,试想一下,如果数据量特别大的时候,我们要每个都计算一下,那样计算量是非常大的&#xff0…

KNN算法代码

一、K近邻算法 KNN是一种监督学习类别的算法,全称(K-NearestNeighbor)直译为K个最近的邻居,是一种聚类算法。该算法认为我们在判断一个物体的类别可以根据与他非常相似的K个物体的类别(这K个物体的类别是已知的&#x…

KNN数据缺失值填充(附源码和数据)不调用包

KNN估计 数据缺失值填充—KNN估计一、基本思想二、步骤1.导入数据2.查看空缺值3.取出要分析的数据4.计算平均值5.计算标准差6.规范化7.计算欧几里得距离8.最优解9.画图 总结 数据缺失值填充—KNN估计 运行环境 python3.6 jupyter notebook 一、基本思想 先将数据标准化&…

数据挖掘——KNN算法的实现

👨‍💻作者简介:练习时长两年半的java博主 📖个人主页:君临๑ 🎁 ps:点赞是免费的,却可以让写博客的作者开心好几天😎 文章目录 一、k-最近邻分类算法介绍 二、k-NN的特…

KNN算法调优

1.所用方法: 交叉验证与网格搜索 交叉验证(为了让被评估的模型更加精确可信): 所有训练集数据分成N等分,几等分就是几折交叉验证 网格搜索:调参数 K-近邻:超参数K 2.API: sklearn.model_selection.GridSearchCV: CV即cross validation…

计算机编程—必备基础知识点

目录: 1. 编程语言1.1 编程1.2 计算机语言1.3 编程语言1.4 翻译器1.5 编程语言和标记语言区别 2. 计算机基础2.1 计算机组成2.2 数据存储2.3 数据存储单位2.4 程序运行 1. 编程语言 1.1 编程 编程:就是让计算机为解决某个问题而使用某种程序设计语言编…

计算机概论--计算机基础知识快速入门

0.前言1.计算机:辅助人脑的好工具 1.1计算机硬件的五大单元1.2CPU的种类1.3接口设备1.4运作流程 2.个人计算机架构与接口设备 2.1CPU2.2内存2.3显卡2.4硬盘与存储设备2.5主板 3.软件程序执行 3.1机器程序与编译程序3.2操作系统 3.2.1操作系统内核3.2.2系统调用 3.3小…

0基础如何开始学习计算机知识?

一、计算机的基本操作 计算机中只有文件和文件夹 计算机中,只有两样东西,文件和文件夹。 文件夹:本身不存储数据内容。文件夹是用来组织和管理文件的。 文件: 所有的txt文本文档,音乐,视频,图…

【电脑讲解】电脑知识入门大全,超详细电脑基础知识讲解

这是一个新坑,希望大家喜欢 电脑的基础知识大全,你确定都知道? 一、软件系统 软件系统包括:操作系统、应用软件等。应用软件中电脑行业的管理软件,IT电脑行业的发展必备利器,电脑行业的erp软件。 二、硬件系统 硬件系…

计算机知识01:计算机基础知识入门

1. 计算机运行流程 如果不是很了解电脑运行流程的话,我们可以类比一下,假设电脑是一个人体,那么每个元件对应到哪个地方呢?可以这样思考: CPU脑袋:每个人会做的事情都不一样(微指令集的差异&a…

IP地址(IP Address)

IP Address在网络中,通信节点都需要一个IP地址 以点分十进制表示,有32位二进制构成(大约43亿) 分为两个部分:网络位和主机位 网络位:代表IP地址所属的网段 主机位:代表网点上的某个节点 由子…