Kullback-Leibler差异与n最近邻居

时间:2018-07-14 10:37:02

标签: r

我想测量两个双精度值向量之间的相似性。

  

KL.divergence
  计算Kullback-Leibler散度。

library( 'FNN' )
> KL.divergence
function (X, Y, k = 10, algorithm = c("kd_tree", "cover_tree", 
    "brute")) 
{
    algorithm <- match.arg(algorithm)
    if (!is.matrix(X)) 
        X <- matrix(X)
    if (!is.matrix(Y)) 
        Y <- matrix(Y)
    n <- nrow(X)
    p <- ncol(X)
    m <- nrow(Y)
    log(m/n) + p * (colMeans(log(knnx.dist(Y, X, k = k, algorithm))) - 
        colMeans(log(knn.dist(X, k = k, algorithm))))
}
<bytecode: 0x560d44f70aa8>
<environment: namespace:FNN>

这令人惊讶-我期望输出一个数字。

我尝试研究论文,解释了knn如何用于有效计算KL散度,但不知所措。

例如,如何计算两个向量的KL得分

a = c(1.1, 1.1, 2.2, 3.3)
b = c(1.2, 2.1, 2.1, 3.5)

0 个答案:

没有答案