数据帧中行的余弦相似度

问题描述 投票:0回答:1

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

我正在使用'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个回答
0
投票

这是生成所需的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
© www.soinside.com 2019 - 2024. All rights reserved.