r - 数据框中行的余弦相似度
问题描述
我有一个数据集,其中每一列都有给定对象的不同参数的概率。第一列是一个字符串,表示对象名称,而所有其他列都有一个数值。
我正在使用“coop”包中的 cosine() 函数来查找对象之间的余弦相似度。理想情况下,我希望函数将每一行解释为一个单独的向量,并给我每个对象之间的一个单独的余弦相似度。无论我尝试了多少,我都无法做到这一点,因为该函数不接受字符串值(对象名称)作为输入。
为简单起见,假设我的数据看起来像这样(实际上它更大更复杂):
美国广播公司 0.75 0.23
xyz 0.80 0.40
jkl 0.32 0.91
我需要的最终结果是一个 3x3 矩阵,它使用数值比较 abc、xyz 和 jkl。
很确定我在这里遗漏了一些非常简单的东西,但我会很感激任何帮助。有没有办法我可以做到这一点?
解决方案
这是生成所需 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
推荐阅读
- drake - Nightly build 未获得 mosek 许可证
- php - PHP PDO SQL Server 无法通过 Ubuntu 终端连接
- network-programming - `select` 是否处理多个端点或多个套接字?
- excel - Excel函数自动递增
- php - 在登录我的 PHP 项目之前需要不同的 PHP 项目登录 - 为什么?
- python - robin_stocks .get_crypto_quote TypeError
- python-3.x - Python:如何使用 speech_recognition 或其他模块将 base64 音频字符串转换为文本?
- python - .h5 文件在写入期间用完磁盘空间后无法读取
- pandas - 拆分和连接数据框
- list - VB6 - 在排序列表中添加和搜索项目 - 更好的性能