如何计算R中两个向量之间不同的众所周知的相似性或距离度量?

时间:2014-01-05 02:44:21

标签: r distance similarity measure

我想计算两个向量之间的相似性(距离):

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

我只是想知道一个包是否可用于计算R中不同的众所周知的相似性(距离)度量?例如,“Resnik”,“Lin”,“Rel”,“Jiang”,......

这些方法的实现并不难,但我认为必须在R中的某些包中定义。

经过一些谷歌搜索后,我找到了一个包"GOSemSim",其中包含大多数测量,但它特定于生物医学应用,我不能用它们来计算两个矢量之间的相似性。

2 个答案:

答案 0 :(得分:10)

proxy”是距离和相似性度量的通用库。支持以下方法:

“Jaccard”“Kulczynski1”“Kulczynski2”“Mountford”“Fager”“Russel”“简单匹配”“Hamman”“Faith”
“Tanimoto”“Dice”“Phi”“Stiles”“Michael”“Mozley”“Yule”“Yule2”“Ochiai”
“Simpson”“Braun-Blanquet”“余弦”“eJaccard”“fJaccard”“相关”“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

答案 1 :(得分:2)

dist函数通过其method参数支持:&#34; euclidean&#34;,&#34;最大&#34;,&#34;曼哈顿&#34;,&#34 ;堪培拉&#34;,&#34;二进制&#34;或者&#34; minkowski&#34;。见?dist