KNN算法简明解析与实战示例

KNN(K-Nearest Neighbors,K最近邻算法)是一种基于实例的学习方法,主要用于分类和回归任务。它的核心思想是:对于一个新的数据点,KNN会根据距离该点最近的K个训练数据点的标签来进行预测。

  • 分类问题:KNN通过多数投票来决定新数据点的类别,K个邻居中出现次数最多的类别将作为预测结果。
  • 回归问题:KNN通过计算K个邻居的平均值来预测新数据点的数值。
主要步骤:
  1. 选择K值:确定K(最近邻的数量)。
  2. 计算距离:计算新数据点与所有训练数据点之间的距离(常用欧氏距离)。
  3. 选择最近K个邻居:找出距离最小的K个邻居。
  4. 投票/平均:在分类问题中,选择出现次数最多的类别作为预测;在回归问题中,计算K个邻居的平均值作为预测。

例题:KNN分类

假设有以下数据集,我们希望用KNN来预测一个新的数据点的类别。

特征1特征2类别
12A
23A
33B
65B
77B
88A

现在,假设我们有一个新数据点 (4, 4),我们想知道它属于哪一类,选择K=3。

解决步骤:
  1. 计算距离:我们使用欧氏距离来计算新数据点与每个数据点的距离。

    欧氏距离公式:

    d(p,q)=(x1−x2)2+(y1−y2)2d(p, q) = \sqrt{(x_1 - x_2)^2 + (y_1 - y_2)^2}

    计算每个数据点与 (4, 4) 的距离:

    • 距离 (1, 2) = (4−1)2+(4−2)2=9+4=13≈3.61\sqrt{(4-1)^2 + (4-2)^2} = \sqrt{9 + 4} = \sqrt{13} \approx 3.61
    • 距离 (2, 3) = (4−2)2+(4−3)2=4+1=5≈2.24\sqrt{(4-2)^2 + (4-3)^2} = \sqrt{4 + 1} = \sqrt{5} \approx 2.24
    • 距离 (3, 3) = (4−3)2+(4−3)2=1+1=2≈1.41\sqrt{(4-3)^2 + (4-3)^2} = \sqrt{1 + 1} = \sqrt{2} \approx 1.41
    • 距离 (6, 5) = (4−6)2+(4−5)2=4+1=5≈2.24\sqrt{(4-6)^2 + (4-5)^2} = \sqrt{4 + 1} = \sqrt{5} \approx 2.24
    • 距离 (7, 7) = (4−7)2+(4−7)2=9+9=18≈4.24\sqrt{(4-7)^2 + (4-7)^2} = \sqrt{9 + 9} = \sqrt{18} \approx 4.24
    • 距离 (8, 8) = (4−8)2+(4−8)2=16+16=32≈5.66\sqrt{(4-8)^2 + (4-8)^2} = \sqrt{16 + 16} = \sqrt{32} \approx 5.66
  2. 选择最近的K个邻居:根据距离排序,选择距离最近的三个点:

    • (3, 3)(距离1.41)
    • (2, 3)(距离2.24)
    • (6, 5)(距离2.24)
  3. 投票:这三个邻居的类别分别是:

    • (3, 3) 属于 B
    • (2, 3) 属于 A
    • (6, 5) 属于 B

    其中,类别 B 出现了 2 次,类别 A 出现了 1 次。

  4. 预测类别:根据多数投票,新数据点 (4, 4) 的预测类别是 B

总结

KNN算法非常直观,通过计算距离并选择最邻近的K个数据点进行预测。对于分类问题,它使用投票机制来决定类别;对于回归问题,它通过计算邻居的平均值来进行预测。在实际应用中,K值的选择和距离度量的选择都会影响KNN的表现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值