0

我正在执行数值变量的 kNN 预测(knn 回归或局部加权平均值)。我使用欧几里得距离和 1/距离作为权重,但我不知道这是如何应用的。我有问题:

WEKA IBk 中回归的加权究竟是如何执行的?这是一个简单的函数,比如 1/distance 还是更复杂的函数?我查看了源代码,但我什么也看不懂。距离是如何定义的——是欧几里得还是一些修改?该代码的含义(这是来自 IBk 源代码的第 867 和 868 行):

distances[i] = distances[i]*distances[i];
distances[i] = Math.sqrt(distances[i]/m_NumAttributesUsed);
4

1 回答 1

1

在 kNN 中,加权允许更接近数据点的邻居对预测值有更大的影响

对于使用 IBk 的 Weka 中的数值回归,加权的执行如链接方法所示。

我总结了以下伪代码中的步骤。

第 0 步:预测 = 0总计 = 0

第1步:

对于每个 k 邻居:

  1. 计算到邻居i的距离

  2. 计算重量:重量 = 1 /(距离)

  3. 更新预测:预测=预测+邻居i的类值*权重

  4. 更新总计:总计 = 总计 + 重量

第 2 步:预测 = 预测 / 总计

第三步:返回(预测)

于 2013-09-27T14:34:36.010 回答