如何在R中计算两个向量之间的不同相似度或距离度量?

7

我希望计算两个向量之间的相似度(距离):

v1 <- c(1, 0.5, 0, 0.1)
v2 <- c(0.7, 1, 0.2, 0.1)

我只是想知道在 R 中是否有可用于计算不同的著名相似度(距离)测量的软件包?例如,"Resnik"、"Lin"、"Rel"、"Jiang"等等。
这些方法的实现并不难,但我真的认为它们一定在某些 R 软件包中定义了。
经过一些搜索,我找到了一个名为"GOSemSim"的软件包,其中包含大多数测量方法,但它是专门用于生物医学应用的,我无法将其用于计算两个向量之间的相似度。

代码是开源的。 - IRTFM
2
你需要访问哪些相似度量的列表? - josliber
2个回答

11
"proxy"是一个用于距离和相似度测量的通用库,支持以下方法:
"Jaccard"、"Kulczynski1"、"Kulczynski2"、"Mountford"、"Fager"、"Russel"、"simple matching"、"Hamman"、"Faith"、
"Tanimoto"、"Dice"、"Phi"、"Stiles"、"Michael"、"Mozley"、"Yule"、"Yule2"、"Ochiai"、
"Simpson"、"Braun-Blanquet"、"cosine"、"eJaccard"、"fJaccard"、"correlation"、"Chi-squared"、"Phi-squared"、"Tschuprow"、
"Cramer"、"Pearson"、"Gower"、"Euclidean"、"Mahalanobis"、"Bhjattacharyya"、"Manhattan"、"supremum"、"Minkowski"、
"Canberra"、"Wave"、"divergence"、"Kullback"、"Bray"、"Soergel"、"Levenshtein"、"Podani"、"Chord"、
"Geodesic"、"Whittaker"、"Hellinger"。
请参考以下示例:
x <- c(1,2,3,4,5)
y <- c(4,5,6,7,8)
l <- list(x, y)
simil(l, method="cosine")

输出是“l”元素之间的相似度矩阵:

      1
2     0.978232

我唯一的问题是对于某些方法(如:“Jaccard”),会出现以下错误:

simil(l, method="Jaccard")
Error in n - d : 'n' is missing

2

dist函数通过其method参数支持以下选项:"euclidean"、"maximum"、"manhattan"、"canberra"、"binary"或"minkowski"。请查看?dist


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接