编写一个R函数来查找余弦相似度



我知道余弦函数可以用来查找R Studio库中存在的余弦相似性。我正试图使用矢量化运算符创建自己的运算符,但我被难住了。我的函数似乎把所有的值加在一起,然后一次性对它们进行运算,而不是对每个点集进行每个余弦相似性,然后像应该的那样把它们加在一起。

cossim <- function(A,B) { (sum(A,B))/sqrt((sum(A^2))*(sum(B^2))) }

我传入两个向量(出于测试目的,我只是试着传入同一个向量,看看它是否会返回1,这就是当你对同一向量的2进行余弦运算时会发生的情况(,它会返回0.8571429,而不是1。

vec1 <- c(1,2,3)

当我计算的时候,函数的结果是12/14,而不是14/14,就像它应该在最后得到1一样。

我认为问题只是在对分子求和之前,应该先将A和B的元素相乘。

cossim <- function(A,B) { (sum(A*B))/sqrt((sum(A^2))*(sum(B^2))) }

最新更新