我已经为函数的输出实现了这个 KNN 内距离方程knnsearch
。
例子
Main dataset is `{ 1 ;2; 5; 10; 20 }`
Query dataset is `{ 3 }`
calculate the distance for all point
k=3
Discard 3-3=0
3-1=2
3-2=1
3-5=2
3-10=7
3-20=17
so {1;2;5} will be nearest neighbours for 3
to calculate knn in the equation
Matrix point
p 1 2 5
1 0 1 4
2 1 0 3
5 4 3 0
calculate knn-inner distance= (1+4+1+3+4+3)/6
当我检查我的代码时,我的代码是 LDOF 异常值算法的一部分,我发现这部分对于多维数组并不准确。这是第一次使用 pdist 功能,我用它来提高速度。
[Idx,Dist] = knnsearch(main,query,'k',10);
sizedata=size(Idx)
Dxp=mean(pdist(main(Idx(1,2:end),:)));
for m =2 : sizedata
d=Dxp;
Dxp=mean(pdist(main(Idx(m,2:end),:)));
% to make matrix with all knn-inner distance for all query points
Dxp=[d;Dxp];
end
我有 Matlab 2018。