机器学习_01_KNN

K近邻算法(K-Nearest Neighbors,KNN)

一、简介

  • KNN是一种**【监督学习算法】**

  • 能解决**【分类任务】**(标签离散)

  • 能解决**【回归任务】**(标签连续)

核心思想

一个样本的类别,由它最近的K个邻居投票决定


二、算法思想

KNN不学任何公式,它只是记住所有训练数据,然后对新来的样本,看它周围最近的K个邻居是什么类别,就跟着投个票。

具体三步

步骤 操作 说明
1 计算距离 新样本和训练集里每一个样本算距离(默认欧式距离)
2 找K个最近邻 按距离从小到大排序,取前K个
3 投票或平均 分类:K个邻居里,哪个类别多,新样本就是哪个类别 回归:K个邻居的标签值取平均,作为预测值

三、距离的度量

距离名称 公式 含义 使用场景
欧式距离 Σ(xᵢ - yᵢ)² 两点间直线距离 最常用(默认)
曼哈顿距离 Σ|xᵢ - yᵢ| 只能走横竖线的街区距离 偶尔用
切比雪夫距离 max(|xᵢ - yᵢ|) 国王移动的最少步数 很少用
闵氏距离 (Σ|xᵢ - yᵢ|^p)^(1/p) 上面三种的统一公式 理论用
其他 余弦距离等 --- 文本场景偶尔用

四、特征的预处理

⚠️ KNN必须做标准化/归一化

原因:KNN靠距离判断。如果特征单位不统一,数值大的特征会主导距离计算,导致预测结果完全被它绑架。


五、K值的选择

K值情况 训练集表现 测试集表现 问题 形象理解
太小(如K=1) 满分 过拟合(学到噪声) 只听一个邻居的话,容易被骗
太大(如K=N) 欠拟合(太模糊) 听全村人的话,反而没主见
合适(如K=3~15) 良好 最好 泛化最佳 听几个靠谱邻居的建议

六、找最佳K

交叉验证

不把命运交给一次验证集,而是把训练数据分成K份,轮流当验证集。

网格搜索

你给几个候选K值(如[3,5,7,9,11]),网格搜索挨个试,交叉验证评估,最后告诉你哪个K值最好。


七、面试总结

KNN是一种基于距离的惰性学习算法,通过找最近的K个邻居来投票(分类)或平均(回归)。

工作原理三步
  1. 算距离(默认欧式距离)

  2. 找K个最近邻

  3. 分类投票,回归平均

核心三要素
要素 说明 关键点
K值 邻居数量 太小过拟合,太大欠拟合 → 用交叉验证+网格搜索选
距离度量 距离计算方式 默认欧式距离
特征预处理 数据标准化 必须标准化/归一化(否则距离被大数值特征绑架)
优缺点
优点 缺点
简单直观,无需训练 预测时慢(要算所有样本的距离)
可解释性强(看邻居) 内存消耗大(要记住所有训练数据)
可用于分类+回归 特征维度高时性能急剧下降(维度灾难)
对异常值不敏感(K足够大时) 必须做特征预处理

KNN适合小数据集、低维度、可解释性要求高的场景。数据量大或维度高时,优先考虑树模型或其他非线性算法。


我是小迦索,一个刚毕业的AI专业学长。 关注我,从0开始,一起走进AI大模型的世界。

相关推荐
郑洁文1 分钟前
基于机器学习的成都市租房数据的分析与应用
人工智能·机器学习·成都市租房数据·成都市租房数据分析
升鲜宝供应链及收银系统源代码服务1 分钟前
升鲜宝AI助手开发功能详尽说明书(五)---升鲜宝生鲜配送供应链管理系统源代码服务
人工智能·生鲜配送源代码·升鲜宝生鲜配送源代码·后端app与手机端·b2b订货商城·客户订货系统源代码·升鲜宝生鲜配送源代码服务
guslegend3 分钟前
AI驱动的缺陷全自动修复
人工智能·软件工程
小e说说4 分钟前
在遵义学美甲,如何找到适合自己的培训机构?
人工智能
terry6004 分钟前
2026企业级携号转网查询标准:论实时数据同步与高并发承载设计
java·大数据·人工智能·json·信息与通信·数据库架构
一一哥Sun5 分钟前
第05课:大模型到底是什么?——AI世界的“超级大脑“
人工智能
林间码客12 分钟前
《人工智能概论》实验4 知识点复习提纲
人工智能·深度学习·机器学习
道友可好13 分钟前
3 个人,100 万行代码,一行都没人写:OpenAI 的 Harness Engineering 实验
前端·人工智能·后端
辞辞辞14 分钟前
江苏正分科技:一站式碳酸锂提锂整套解决方案,引领湿法提锂行业革新
大数据·人工智能·科技
钓了猫的鱼儿15 分钟前
基于深度学习+AI的秸秆目标检测与预警系统(Python源码+数据集+UI可视化界面+YOLOv11训练结果)
人工智能·深度学习·目标检测