我正在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中选择一个? - 我想这与我正在学习的算法更相关。
谢谢!
答案 0 :(得分:0)
要将更多权重放在一个功能上,您可以将给定功能乘以某个值。
这相当于沿着各个维度拉伸空间,有效地在计算距离时更加强调相应特征的变化。
您提到的fastKnn函数使用最近k个邻居的“模式”(即最常值)。这适用于分类(您需要预测几个类),但对您的情况不是很有用。
对于回归,取最近邻居的平均值是一个不错的选择。