1

我已经为函数的输出实现了这个 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。

4

0 回答 0