根据我的理解,经典的KNN算法就像这样(对于离散数据):
我如何在这款经典KNN上引入重量?我读到更重要的是应该给更近的点,我读this,但不明白这将如何适用于离散数据。
对我而言,首先,使用 argmax 没有任何意义,如果重量增加距离,则会使距离变得更糟。对不起,如果我说废话。
答案 0 :(得分:2)
考虑一个简单的例子,它有三个分类(红绿蓝)和六个最近的邻居,由R,G,B表示。我将使这个线性简化可视化和算术
R B G x G R R
与距离列出的点是
class dist
R 3
B 2
G 1
G 1
R 2
R 3
因此,如果我们使用未加权的最近邻居,那么简单的"投票"算法是3-2-1,有利于Red
。但是,通过加权影响,我们有......
red_total = 1/3^2 + 1/2^2 + 1/3^2 = 1/4 + 2/9 ~= .47
blue_total = 1/2^2 ..............................= .25
green_total = 1/1^2 + 1/1^2 ......................= 2.00
... x
由于距离近似而为Green
。
低delta函数仅仅是分类函数;在这个简单的例子中,它返回red | green | blue
。在一个更复杂的例子中,......好吧,我将其留给以后的教程。
答案 1 :(得分:1)
好吧,关闭蝙蝠让我说我不是你提供的链接的粉丝,它有图像方程式,并在图像和文本中使用不同的符号。 强>
因此,请关注常规的 k-NN 算法。常规k-NN实际上只是加权k-NN的特例。您为 k 邻居分配权重1,为其余邻居分配权重。
<-
{crow,turkey,hen}