跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

K-Nearest Neighbors 算法距离度量选择与数据维度归一化

K-Nearest Neighbors(KNN)算法中的距离度量选择及数据维度归一化问题。详细阐述了 L∞、曼哈顿、Lp 及欧式距离的计算公式。通过身高与脚码的分类示例,说明了多维特征量纲差异会导致权重失衡,使算法偏向数值较大的特征,从而引发预测错误。文章强调了在计算距离前进行数据归一化的重要性,以确保各特征具有同等权重,提高模型准确性。

MongoKing发布于 2026/3/28更新于 2026/10/25102 浏览
K-Nearest Neighbors 算法距离度量选择与数据维度归一化

k 近邻算法(K-Nearest Neighbors,简称 KNN)是一种常用的监督学习算法,可以用于分类和回归问题。在 OpenCV 中,KNN 算法的函数为 cv.ml.KNearest_create()。

距离度量的选择

k 近邻算法中需要按照距离递增次序排序,通常选取以下类型的距离:

样本特征表示为: $$x_{i}=\left(x_{i}^{(1)},x_{i}^{(2)},\cdots,x_{i}^{(n)}\right)^{\mathrm{T}}$$

L∞距离: $$L_{\infty}(x_{i},x_{j})=\max_{l}\mid x_{i}^{(l)}-x_{j}^{(l)}\mid$$

曼哈顿距离: $$L_{1}(x_{i},x_{j})=\sum_{l=1}^{n}|x_{i}^{(l)}-x_{j}^{(l)}|$$

Lp 距离: $$L_{p}(x_{i},x_{j})=\left(\sum_{l=1}^{n}\mid x_{i}^{(l)}-x_{j}^{(l)}\mid^{p}\right)^{\frac{1}{p}}$$

欧式距离: $$L_{2}(x_{i},x_{j})=\left(\sum_{l=1}^{n}|x_{i}^{(l)}-x_{j}^{(l)}|^{2}\right)^{\frac{1}{2}}$$

数据维度归一化

假设所使用的样本特征为 ${(x_{i1},x_{i2},\ldots,x_{in})}{i=1}^m$,取每一轴上的最大值减最小值: $$M{j}=\max_{i=1,\ldots,m}x_{ij}-\min_{i=1,\ldots,m}x_{ij}$$

随后在计算距离时将每一个坐标轴除以相应的 $M_{j}$ 以进行归一化: $$d((y_{1},\ldots,y_{n}),(z_{1},\ldots,z_{n}))=\sqrt{\sum_{j=1}^n\left(\frac{y_{j}}{M_{j}}-\frac{z_{j}}{M_{j}}\right)^2}$$

数据维度归一化的必要性

当使用多维度数据计算距离时,数据维度的归一化是极其必要的。

例如,以身高 (cm) 与脚码(尺码)大小作为特征值,判断男性或者女性。5 个训练样本分布如下:

  • A [(179,42),男]
  • B [(178,43),男]
  • C [(165,36),女]
  • D [(177,42),男]
  • E [(160,35),女]

可以发现,第一维身高特征是第二维脚码特征的 4 倍左右,在计算距离度量的时候,如果不进行数据维度的归一化,算法就会偏向于第一维特征,这会造成两个特征并不是等价重要的,最终可能会导致距离计算错误,从而导致预测错误。

以测试样本 F[(167,43),男] 为例,取 k=3,分别算出 F 离训练样本的欧式距离,然后选取最近的 3 个,多数类别就是我们最终的结果,计算结果如下: $$AF=\sqrt{(167-179)^2+(43-42)^2}=\sqrt{145}$$ $$BF=\sqrt{(167-178)^2+(43-43)^2}=\sqrt{121}$$ $$CF=\sqrt{(167-165)^2+(43-36)^2}=\sqrt{53}$$ $$DF=\sqrt{(167-177)^2+(43-42)^2}=\sqrt{101}$$ $$EF=\sqrt{(167-160)^2+(43-35)^2}=\sqrt{103}$$

可以得到,最近的前三个分别是 C,D,E 三个样本,那么由 C,E 为女性,D 为男性,得到预测结果为女性。

女性脚 43 码的可能性远远小于男性脚 43 码的可能性,算法却错误地预测 F 为女性,这不是算法的问题,这是各个特征量纲不同的问题,这里量纲直接导致身高的权重远大于脚码的权重,进而导致预测错误。所以在计算前应该让每个特征同等重要,这就是归一化的必要性。

目录

  1. 距离度量的选择
  2. 数据维度归一化
  3. 数据维度归一化的必要性

更多推荐文章

查看全部
  • Copilot 一键生成中文 Git Commit Message
  • Python 启动器 py.exe 功能与使用指南
  • 动态规划经典题型:最小花费爬楼梯与解码方法
  • Sora 火爆背后:国内真正合格的 AI 产品经理为何稀缺?
  • .env 文件的作用及为何不能提交到 Git
  • 医疗 AI 场景下算法编程深度解析(五):朴素贝叶斯算法
  • Linux 系统 PostgreSQL 12.0 安装部署详细步骤
  • 智谱 AutoGLM 开源:手机操作 AI Agent 的技术架构与生态展望
  • Python 日常高频写法与内置函数速查
  • AI 工具泛滥时代,为何单纯技能越来越不值钱?
  • 微信朋友圈批量发送与自动同步工具使用指南
  • whisper.cpp 跨平台语音识别部署全流程
  • OpenClaw 智能体框架入门:环境部署、模型配置与远程访问指南
  • Python Google Search API 集成实战与无依赖方案
  • Figma 搭配 Claude 与 Weavy AI:从原型到素材的完整工作流
  • AIGC 在元宇宙中的应用与技术实现
  • AIGC 在艺术创作中的应用与机遇
  • 第十六届蓝桥杯省赛 C/C++ 大学 A 组真题解析
  • 基于 FPGA 的高性能 PCI 接口设计与实现
  • 动态规划解斐波那契问题:三步、爬楼梯与解码方法

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online