【问题标题】:How to calculate different well-known similarity or distance measures between two vectors in R?如何计算R中两个向量之间的不同众所周知的相似度或距离度量?
【发布时间】:2014-01-05 02:44:21
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 代码是开源的。
  • 您需要访问的相似性度量列表是什么?

标签: r distance similarity measure


【解决方案1】:

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

“Jaccard”“Kulczynski1”“Kulczynski2”“Mountford”“Fager”“Russel”“简单匹配”“Hamman”“Faith”
“Tanimoto”“Dice”“Phi”“Stiles”“Michael”“Mozley”“Yule”“Yule2”“Ochiai”
"Simpson" "Braun-Blanquet" "cosine" "eJaccard" "fJaccard" "correlation" "Chi-squared" "Phi-squared" "Tschuprow"
“克莱默”“皮尔逊”“高尔”“欧几里得”“马哈拉诺比斯”“Bhjattacharyya”“曼哈顿”“至上”“明可夫斯基”
“堪培拉”“Wave”“分歧”“Kullback”“Bray”“Soergel”“Levenshtein”“Podani”“Chord”
“测地线”“惠特克”“海灵格”

检查以下示例:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-22
      • 2019-05-29
      • 1970-01-01
      • 2020-01-16
      • 2021-07-19
      • 1970-01-01
      • 2020-06-18
      相关资源
      最近更新 更多