如何在 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" ( 即 最频繁的值)。这适用于分类(您有几个 类 想要预测),但对您的情况不是很有用。
对于回归,取最近邻值的平均值是一个不错的选择。
我正在 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" ( 即 最频繁的值)。这适用于分类(您有几个 类 想要预测),但对您的情况不是很有用。
对于回归,取最近邻值的平均值是一个不错的选择。