【问题标题】:Cosine similarity of rows in a data frame数据框中行的余弦相似度
【发布时间】:2020-07-18 17:16:23
【问题描述】:

我有一个数据集,其中每一列都有给定对象的不同参数的概率。第一列是一个字符串,表示对象名称,而所有其他列都有一个数值。

我正在使用“coop”包中的 cosine() 函数来查找对象之间的余弦相似度。理想情况下,我希望该函数将每一行解释为一个单独的向量,并为我提供每个对象之间的单独余弦相似度。无论我尝试了多少,我都无法做到这一点,因为该函数不接受字符串值(对象名称)作为输入。

为简单起见,假设我的数据看起来像这样(实际上它更大更复杂):

abc 0.75 0.23

xyz 0.80 0.40

jkl 0.32 0.91

我需要的最终结果是一个 3x3 矩阵,它使用数值比较 abc、xyz 和 jkl。

很确定我在这里遗漏了一些非常简单的东西,但我希望能提供任何帮助。有什么办法可以做到吗?

【问题讨论】:

    标签: r data-analysis analysis cosine-similarity


    【解决方案1】:

    这是生成所需 3x3 矩阵的简单方法。

    library(coop)
    df = data.frame(name=c('abc', 'xyz', 'jkl'), v1=c(0.75,0.8,0.32), v2 = c(0.23,0.4, 0.91))
    
    # make a matrix transposed with each column corresponding to the name
    mm = t(as.matrix(df[,2:3]))
    cosine(mm)
    #          [,1]      [,2]      [,3]
    #[1,] 1.0000000 0.9862394 0.5937443
    #[2,] 0.9862394 1.0000000 0.7186021
    #[3,] 0.5937443 0.7186021 1.0000000
    

    【讨论】:

      猜你喜欢
      • 2021-03-31
      • 1970-01-01
      • 2020-08-12
      • 1970-01-01
      • 2019-07-21
      • 2011-01-01
      • 2017-12-12
      • 2018-06-16
      相关资源
      最近更新 更多