选择不同的 k 值,将会导致不同的结果。例如回到图 1,当 k 取 5 时,新出现的点被归为三角形。但是当我们设置 k 等于 7 时,结果则恰恰相反,该点将被归为圆形,如图 1 所示,此时该点的周围有 4 个圆形和 3 个三角形,所以此点会被归为圆形。
由此可知,选取不同的k值,会对最后的结果造成很大影响,那么应该如何确定 k 值呢?可以通过设置不同的k值,然后比较不同k值对应的最后结果的正确率来确定。
k 值的选择会对结果造成影响,想象一个特例,当我们取 k=2 时,正好周围有一个圆形和一个三角形,此时我们应该怎样对这个点进行分类呢?现在有一点 (4.9,5) ,当 k=2 时,周围有一个圆形和一个三角形,如图 2 所示。此时如果没有设置正确的程序,则会出现异常的结果,因为圆形和三角形的个数相同。
进一步分析可以发现,这个点到三角形的距离是 4.9,而到圆形的距离是 5,我们可不可以说,这个点更靠近三角形,所以把这个点归为三角形呢?这就是距离加权最近邻算法。