如何在 Octave 中使用 kNN 为数据集变量添加权重?

How to add weights to dataset variables using kNN in Octave?

我正在 Octave 中实现 this kNN 算法。

函数本身是这样声明的

    function [classified, k, dist, idx] = fastKNN(trained, unknown, k, distance)

我的数据集是这样的:

%lat, lng, area, buildyear, price
54.6, 24.7, 23.6, 1965, 100000.00
54.6, 24.7, 13.6, 1964, 50000.00
...

我有 2 个问题。

问题 1:如何为数据集变量添加权重。例如区域的权重比坐标大得多。

问题 2: 如果设置 k=3,算法 return 会向我提供最近的 3 个邻居的平均价格,还是从 3 个中选择一个? - 我猜这与我正在学习的算法更相关。

谢谢!

要对一个特征赋予更多权重,您可以将给定特征乘以某个值。

这相当于将space沿各自的维度拉伸,有效地在计算距离时更加强调各自特征的变化。


您提到的 fastKnn 函数使用最近的 k 个邻居的 "mode" ( 最频繁的值)。这适用于分类(您有几个 类 想要预测),但对您的情况不是很有用。

对于回归,取最近邻值的平均值是一个不错的选择。