假设我有一堆实例,我想找到离特定实例最近的K
实例。此外,在计算距离时,我有一些权重来表示每个维度的强度。如何将这些权重与MATLAB中的KNN
查找过程相结合?
有两种方法可以允许您这样做。查看knnsearch
文档,您可以使用seuclidean
标志执行标准化的欧几里得距离。两点之间的每个坐标差通过除以S
中相应的刻度值进行缩放。S
默认是每个坐标的标准偏差。您可以通过指定Scale
参数手动指定这些尺度,然后指定一个矢量,其中每个组件将为您缩放每个维度,而不是每个维度的标准偏差。
或者,您可以提供自己的函数来计算两个向量之间的距离。您可以事先在工作空间中定义这些权重,然后创建一个匿名函数包装器,在计算您想要的任何距离度量时访问这些权重。匿名函数只能取两个向量,对应于KNN中两个不同的坐标向量。因此,使用这个匿名函数来访问应该已经在工作区中定义的权重,然后从那里开始。
查看:http://www.mathworks.com/help/stats/knnsearch.html