我正在执行数值变量的kNN预测(knn回归或局部加权平均值)。我使用欧氏距离和1 /距离作为重量,但我不知道这是如何应用的。我有疑问:
WEKA IBk对回归的权重究竟如何?这是一个简单的功能,如1 /距离或更复杂的东西?我查看了源代码,但我什么都听不懂。确切距离是如何定义的 - 是欧几里德还是一些修改?该代码的含义(这是来自IBk源代码的第867和868行):
distances[i] = distances[i]*distances[i];
distances[i] = Math.sqrt(distances[i]/m_NumAttributesUsed);
答案 0 :(得分:1)
在kNN中,加权允许靠近数据点的邻居对预测值产生更大的影响。
对于使用IBk的Weka中的数值回归,加权按链接method中所示执行。
我总结了以下伪代码中的步骤。
第0步:预测= 0 ,总计= 0
第1步:
对于每个k邻居:
计算与邻居的距离 i
计算重量:重量= 1 /(距离)
更新预测:预测=预测+邻居i的类别值*权重
- 更新总数:总计=总计+重量
醇>第2步:预测=预测/总计
第3步:返回(预测)