Knn算法是如何工作的

Knn algorithm how it works

当我开始理解这个算法时,我并不太明白它应该如何工作。我有一个数据集,并且有需要分类的新数据。 数据集:

2   2   a
3   5   a
1   8   b
3   16  b
4   12  a
5   20  a

还有一个新数据:

1   2

现在我需要将新集合分类为 "a" 或 "b"。 我可以为每个数据集计算每个集合的距离。sqrt((aNew-Ai)^2+(bNew-Bi)^2)。 我有远方的数据:

    a   b   dist    class
new 1   2   ?       ?
old 2   2   1,0     a
old 3   5   5,8     a
old 1   8   8,1     b
old 3   16  16,3    b
old 4   12  12,6    a
old 5   20  20,6    a

例如。 K等于6。 我应该如何对我的新数据进行分类?

在您的示例中它是 a,因为它是 k (6) 个最近邻列表中最常见的值。
但是K应该是一个奇数,以防止分类不明确。

您需要找到新数据点与数据集中所有点之间的距离。

  1. 按升序排列这些距离。
  2. 从列表中选取前 K 个距离。
  3. 从选择的距离得到class。
  4. 现在检查哪个 class 的重复次数或得票数最多。

要在 Java 中实现,请参阅 here