我有一个excel文件,其中包含14个属性的学生记录(如下所示)。我想计算每对学生之间的相似度。
首先,我必须转换字符数组中的行。然后我制作了一个文档项矩阵,并计算了每对之间的距离。然后我从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
我期望数据框中的每一对行之间都具有相似性。
答案 0 :(得分:0)
最近,我发现函数sum
将为我提供许多常见属性。
Com=sum((td1==td2)==TRUE)
接下来的事情是获取两个向量中的元素数量,它们显然为4。
len = length(td1)
最后,我们可以找到Jaccard相似度,它是联合的交集。
sim = com/len