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应该是一个奇数,以防止分类不明确。
您需要找到新数据点与数据集中所有点之间的距离。
- 按升序排列这些距离。
- 从列表中选取前 K 个距离。
- 从选择的距离得到class。
- 现在检查哪个 class 的重复次数或得票数最多。
要在 Java 中实现,请参阅 here
当我开始理解这个算法时,我并不太明白它应该如何工作。我有一个数据集,并且有需要分类的新数据。 数据集:
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应该是一个奇数,以防止分类不明确。
您需要找到新数据点与数据集中所有点之间的距离。
- 按升序排列这些距离。
- 从列表中选取前 K 个距离。
- 从选择的距离得到class。
- 现在检查哪个 class 的重复次数或得票数最多。
要在 Java 中实现,请参阅 here