如何计算数据帧中两行之间的jaccard相似度

时间:2019-05-14 07:54:29

标签: r cosine-similarity

我有一个excel文件,其中包含14个属性的学生记录(如下所示)。我想计算每对学生之间的相似度。

enter image description here

首先,我必须转换字符数组中的行。然后我制作了一个文档项矩阵,并计算了每对之间的距离。然后我从1中减去距离。但是发现错误的相似性。

F360 <- read_excel("C:/Users/DreamWorld/F360.xlsx")
mydf=data.frame(F360$nursery,F360$higher,F360$internet,F360$romantic,stringsAsFactors = FALSE)
td1=as.character(mydf[1,])
td2=as.character(mydf[2,])
d1=paste(td1[1],td1[2],td1[3],td1[4],sep = " ")
d2=paste(td2[1],td2[2],td2[3],td2[4],sep = " ")
myvector=c(d1,d2)
mycorpus=Corpus(VectorSource(myvector))
dtm=as.matrix(DocumentTermMatrix(mycorpus))
jdist=as.matrix(dist(dtm,method = "jaccard"))
jsim=1-jdist

我期望数据框中的每一对行之间都具有相似性。

1 个答案:

答案 0 :(得分:0)

最近,我发现函数sum将为我提供许多常见属性。

Com=sum((td1==td2)==TRUE)

接下来的事情是获取两个向量中的元素数量,它们显然为4。

len = length(td1)

最后,我们可以找到Jaccard相似度,它是联合的交集。

sim = com/len