news 2026/6/23 15:17:34

物以类聚,人以群分的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/6/23 17:39:14

如何快速掌握Obsidian剪藏工具:新手用户的完整操作指南

如何快速掌握Obsidian剪藏工具:新手用户的完整操作指南 【免费下载链接】obsidian-clipper Highlight and capture the web in your favorite browser. The official Web Clipper extension for Obsidian. 项目地址: https://gitcode.com/gh_mirrors/obsidia/obsi…

作者头像 李华
网站建设 2026/6/23 17:40:48

【数据库】金仓数据库:不止于兼容,更致力于成为企业的增长引擎

兼容 是对企业历史投资的尊重 是确保业务平稳过渡的基石 然而 这仅仅是故事的起点 在数字化转型的深水区,企业对数据库的需求早已超越“语法兼容”的基础诉求。无论是核心业务系统的稳定运行,还是敏感数据的安全防护,亦或是复杂场景下的性能优…

作者头像 李华
网站建设 2026/6/23 15:25:15

【开题答辩全过程】以 基于javaweb的高校招生管理系统设计与实现为例,包含答辩的问题和答案

个人简介 一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等 开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。 感谢大家…

作者头像 李华
网站建设 2026/6/23 15:19:16

JavaScript DOM 原生部分(二):元素内容修改

文章目录一.修改纯文本内容( textContent / innerText )1.textContent(推荐)2.innerText二.修改 HTML 内容( innerHTML )三.修改表单元素的值( value )四.替换元素本身( outerHTML )关键注意事项总结在 JavaScript 中,修改 DOM 元素的内容是常见操作,主要分为 修改文本内容、 修…

作者头像 李华