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

时间:2017-08-18 10:57:55

标签: algorithm knn

我正在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
...

我有两个问题。

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

要将更多权重放在一个功能上,您可以给定功能乘以某个值。

这相当于沿着各个维度拉伸空间,有效地在计算距离时更加强调相应特征的变化。

您提到的fastKnn函数使用最近k个邻居的“模式”(最常值)。这适用于分类(您需要预测几个类),但对您的情况不是很有用。

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