news 2026/7/14 2:33:05

物以类聚,人以群分的KNN算法(上)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
物以类聚,人以群分的KNN算法(上)

什么是KNN

有天,你想着把你另外一套房子租出去,这样还能减轻一下生活的负担。但是你却不知道把房租定为多少比较合适。这时候你就在业主群里加了几个房子已经出租的房主,分别询问了他们的楼层高度、房屋面积、采光率等因素以及他们出租的价格。然后你找到两三个跟你房间差不多情况的,得知他们的出租价格都在a元左右,你就想着:得了,我的房子出租价格也定为a元吧。

这种“根据相似房屋价格确定自己房屋价格”的思维方式,就是K近邻(K-Nearest Neighbors,KNN)算法的核心思想!

KNN是由 Cover 和 Hart 于 1968 年提出的经典机器学习算法,属于监督学习方法,它的工作机制比较简单,通俗点说就是“物以类聚,人以群分”。它给定测试样本,根据某种的距离度量找出训练集中跟它最近的k kk个训练样本,然后基于这k kk个邻居的信息,来对结果进行预测。

KNN与之前介绍的线性回归、逻辑回归不同,它是有名的“惰性学习”的代表,它在训练阶段只是把样本保存好,在有测试样本来了,才在训练集中找到与测试样本相近的k kk个邻居样本,并根据这些邻居样本给出测试样本的最终结果。

应用场景

KNN做为常见的机器学习算法,常见的应用场景如下:

  • 分类:垃圾邮件分类、物体识别等

  • 回归:销量预测、房价预测、气温预测等。

KNN基本原理

核心思想

KNN的原理可以概况为:给定一个训练数据集,对于新的输入样本,在训练集中找到跟这个样本最邻近的k kk个实例,根据这k kk个示例的标签值,得到新输入样本的预测值。

要想用好KNN,就得先搞清楚以下这三个问题:如何判断最邻近,如何选择合适得k值,以及如何得出最终预测值?

距离计算

在我们日常生活中,说两个人很近,可以是住得近、每天在一起时间很多、共同爱好很多等。在特征空间中两个样本点的距离是两个样本点相似度的反映。KNN中特征空间一般是n nn维实数向量空间R n \mathbf{R}^nRn, 使用的是欧式距离。但是也可以是其他距离,比如更一般的L p L_pLp距离。

假设特征空间X \mathcal{X}Xn nn维的实数向量空间R n \mathbf{R}^nRnx i , x j ∈ X , x i = ( x i ( 1 ) , x i ( 2 ) , . . . , x i ( n ) ) T , x j = ( x j ( 1 ) , x j ( 2 ) , . . . , x j ( n ) ) T x_i,x_j\in{\mathcal{X}}, \quad x_i=(x_i^{(1)}, x_i^{(2)},...,x_i^{(n)})^T,\quad x_j=(x_j^{(1)}, x_j^{(2)},...,x_j^{(n)})^Txi,xjX,xi=(xi(1),xi(2),...,xi(n))T,xj=(xj(1),xj(2),...,xj(n))T

  • 闵可夫斯基距离

x i , x j x_i,\quad x_jxi,xjL p L_pLp距离为:
L p ( x i , x j ) = ( ∑ l = 1 n ∣ x i ( l ) − x j ( l ) ∣ p ) 1 p L_p(x_i, x_j) = (\sum_{l=1}^n|x_i^{(l)}-x_j^{(l)}|^p)^{\frac{1}{p}}Lp(xi,xj)=(l=1nxi(l)xj(l)p)p1
在这里p ≥ 1 p\geq1p1,当p pp分别取 1、2、∞ \infty时,则分别为曼哈顿距离、欧式距离和切比雪夫距离。

  • 曼哈顿距离

曼哈顿距离是各个维度的坐标差之和。其计算公式为:
L 1 ( x i , x j ) = ∑ l = 1 n ∣ x i ( l ) − x j ( l ) ∣ L_1(x_i, x_j) = \sum_{l=1}^n|x_i^{(l)}-x_j^{(l)}|L1(xi,xj)=l=1nxi(l)xj(l)
假设你在坐标点( 1 , 1 ) (1, 1)(1,1),距离坐标( 3 , 4 ) (3, 4)(3,4)的曼哈顿距离L = ∣ 1 − 3 ∣ + ∣ 1 − 4 ∣ = 5 L=|1-3|+|1-4|=5L=∣1

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 13:46:55

stm32毕业论文(毕设)必过选题怎么选

文章目录1前言2 如何选题3 选题方向2.1 嵌入式开发方向2.2 物联网方向2.3 移动通信方向2.4 人工智能方向2.5 算法研究方向2.6 移动应用开发方向2.7 网络通信方向3.4 学长作品展示4 最后1前言 🥇 近期不少学弟学妹询问学长关于电子信息工程专业相关的毕设选题&#…

作者头像 李华
网站建设 2026/7/15 1:25:44

渗透测试流程到底是什么?这篇给你讲清楚(超详细)

渗透测试流程到底是什么?这篇给你讲清楚(超详细) 0x01 主动扫描 通常来说,我们会先使用类似于AWVS 、Appscan等工具进⾏主动扫描;主动扫描这个过程主要旨在使用自动化工具解放双手发现漏洞。 对于主动扫描的软硬件产品,使用的方…

作者头像 李华
网站建设 2026/7/12 20:05:50

Graph增强Agent实战指南:解决LLM智能体的核心痛点!

简介 文章介绍图增强大型语言模型智能体(GLA)如何解决纯LLM智能体的规划不可靠、记忆低效、工具调用混乱等问题。通过图结构,GLA实现了可靠性、效率、可解释性和灵活性提升。文章详细探讨了图结构在单智能体规划、记忆管理和工具管理中的应用…

作者头像 李华
网站建设 2026/7/14 6:14:16

好写作AI范式通译:如何成为跨学科研究的“学术翻译官”?

在跨学科研究中,最难的或许不是理解另一个领域的知识,而是用对方的“学术方言”进行优雅对话——这恰是智能工具最能大显身手之处。好写作AI官方网址:https://www.haoxiezuo.cn/跨学科写作的“巴别塔困境”研究者穿梭于不同领域时常遇此窘境&…

作者头像 李华
网站建设 2026/7/14 14:51:20

JavaScript DOM 原生部分(三):元素属性修改

文章目录一.修改标准 HTML 内置属性1.直接通过属性名操作( 推荐,更简洁 )2.使用 setAttribute() / getAttribute() ( 通用方法 )二.修改样式属性( style / classList )1.修改行内样式( element.style )2.修改类样式( classList ,推荐)三.修改自定义数据属性( data-*)四.特殊属性…

作者头像 李华
网站建设 2026/7/14 5:37:03

【VSCode量子硬件连接日志解密】:揭秘量子计算调试的幕后核心技巧

第一章:VSCode量子硬件的连接日志在现代量子计算开发中,Visual Studio Code(VSCode)已成为集成开发环境的首选。通过扩展插件与远程量子设备建立稳定连接,开发者能够实时提交量子电路并获取测量结果。连接过程中的日志…

作者头像 李华