KNN算法工作原理解析及新样本分类实操问题咨询
帮你理清楚KNN的分类逻辑~
嘿,我明白刚接触KNN时容易搞不清它到底怎么运作,咱们就拿你给的例子一步步拆解清楚!
你的问题背景
你手头有这么一份带标签的数据集(每一行是「特征1 特征2 类别」):
- 2 2 a
- 3 5 a
- 1 8 b
- 3 16 b
- 4 12 a
现在有个新样本 1 2,需要判断它属于a还是b,你已经用欧氏距离公式 sqrt((aNew-Ai)^2+(bNew-Bi)^2) 算出了新样本和每个旧样本的距离,我把这些数据整理成表格更清晰:
| 样本类型 | 特征1 | 特征2 | 与新样本的距离 | 类别 |
|---|---|---|---|---|
| 新样本 | 1 | 2 | - | ? |
| 旧样本1 | 2 | 2 | 1,0 | a |
| 旧样本2 | 3 | 5 | 5,8 | a |
| 旧样本3 | 1 | 8 | 8,1 | b |
| 旧样本4 | 3 | 16 | 16,3 | b |
| 旧样本5 | 4 | 12 | 12,6 | a |
KNN的核心逻辑:投票选邻居
KNN说白了就是找最近的几个邻居,看大多数邻居是什么类别,新样本就跟着是什么类别,核心步骤分3步:
1. 选个k值(邻居数量)
这是KNN最关键的参数,一般选奇数(避免出现平票的尴尬情况),比如咱们选k=3或者k=5来试试。
2. 按距离排序,挑最近的k个邻居
先把所有旧样本按和新样本的距离从小到大排个序:
- 旧样本1(距离1,0,类别a)→ 最近
- 旧样本2(距离5,8,类别a)→ 第二近
- 旧样本3(距离8,1,类别b)→ 第三近
- 旧样本5(距离12,6,类别a)→ 第四近
- 旧样本4(距离16,3,类别b)→ 最远
3. 投票定类别
- 如果选k=3:最近的3个邻居里,有2个
a,1个b,投票结果是a - 如果选k=5:所有5个邻居里,有3个
a,2个b,投票结果还是a
所以不管选k=3还是k=5,这个新样本都会被分类为a~
小补充:我注意到旧样本3(1,8)和新样本(1,2)的欧氏距离实际应该是6.0(因为x坐标相同,y差6),你算的8,1可能是手滑算错啦,但这不影响理解KNN的核心逻辑,重点是“找近邻投票”这个思路哦!
内容的提问来源于stack exchange,提问作者Jhon
相关产品推荐
相关产品推荐

