如何定义KNN的权重?

时间:2013-10-17 13:43:10

标签: matlab machine-learning knn euclidean-distance

我想在KNN方法中为距离测量确定一组权重。我通读了MATLAB的帮助,发现有反函数或平方反函数(w.r.t距离)权重,但用户定义的权重必须是形式的函数:@ fnc 其中

  

fcn是一个接受非负距离矩阵的函数,并返回一个包含非负距离权重的矩阵。例如,inversesquared相当于@(d)d.^(-2)

我已经定义了函数来提供一组随机的权重:

function WGT=gene 
weights=round(rand(a,b))
WGT=T
end

但是,当我使用KNN时,权重不会改变并且均匀分布。

1 个答案:

答案 0 :(得分:0)

您的拟合代码是否看起来像ClassificationKNN.fit(x, y, 'DistanceWeight', gene_weights)?例如,我认为你的意思是

function w = gene_weights(x)
    w = round(rand(size(x)));
end

或者更紧凑,您只需指定gene_weights = @(x) round(rand(size(x)));

即可