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

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

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

MongoKing发布于 2026/3/28更新于 2026/7/2746 浏览
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. 数据维度归一化的必要性
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Coze 抓取小红书爆款视频写入飞书多维表实战
  • NVIDIA 580 驱动 CUDA13 cuDNN9.13 在 Win11 Ubuntu WSL2 环境下的安装与验证
  • OpenClaw 远程访问配置指南:SSH 隧道与免密登录
  • Doubao-Seed-Code 接入 Claude Code 本地开发实战指南
  • LLaMaFactory 基于魔搭社区免费 GPU 微调大模型教程
  • Z-Image-ComfyUI 网页端部署与使用指南
  • AI 小说创作工具对比:炼字工坊、豆包、千问及文心一言实测
  • OpenClaw 集成飞书机器人实战指南
  • C++ 类与对象进阶:默认成员函数与运算符重载
  • 零基础也能做网页?PyWebIO表单快速构建指南(新手必看)
  • 开源 AI 编程工具对比:Superpowers 技能库与 OpenSpec 规范驱动
  • 宏智树AI:基于ChatGPT的学术论文写作辅助工具
  • 大模型微调的技术含量取决于具体实践与定位
  • 纯 LLM、多模态大模型与 AIGC 就业方向对比分析
  • Kohya's GUI 教程:Stable Diffusion 模型训练与 LoRA 定制
  • Agent实习模拟面试之Dify + Skill本地部署大模型智能体:从零构建企业级可落地的AI Agent系统
  • Vivado 2023.2 安装指南:Windows 与 Linux 双平台部署
  • 宇树 G1 机器人 SDK2 开发指南:环境搭建至 Demo 测试
  • 二级Python简单应用题常见题型与参考代码
  • FreeCAD 修复 STL 网格并转换为实体模型的 5 步流程

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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