我想在KNN方法中为距离测量确定一组权重。我通读了MATLAB的帮助,发现有反函数或平方反函数(w.r.t距离)权重,但用户定义的权重必须是形式的函数:@ fnc
其中
fcn
是一个接受非负距离矩阵的函数,并返回一个包含非负距离权重的矩阵。例如,inversesquared
相当于@(d)d.^(-2)
。
我已经定义了函数来提供一组随机的权重:
function WGT=gene
weights=round(rand(a,b))
WGT=T
end
但是,当我使用KNN时,权重不会改变并且均匀分布。
答案 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)));