如何测量三个向量之间的相似性?
假设我有三个学生和他们的科目标记。
学生1(12,23,43,35,21)
学生2(23,34,45,25.17)和
学生3(34,43,22,11,39)
现在我想衡量这三个学生之间的相似性。谁可以帮我这个事。提前谢谢。
答案 0 :(得分:0)
你想要相似性,而不是相异性。后者有许多功能,一些在评论中提到。最常用的不相似度量是欧几里德距离。
要测量相似度,您可以使用R中simil(...)
包中的proxy
函数,如下所示。假设每个学生的分数顺序相同,您可以将分数组合成一个矩阵,然后:
Student.1 <- c(12, 23, 43, 35, 21)
Student.2 <- c(23, 34, 45, 25, 17)
Student.3 <- c(34, 43, 22, 11, 39)
students <- rbind(Student.1,Student.2,Student.3)
library(proxy)
simil(students,method="Euclidean")
# Student.1 Student.2
# Student.2 0.04993434
# Student.3 0.02075985 0.02593140
这计算每个学生与其他学生的欧几里德距离,并使用
将其转换为相似度分数sim = 1 /(1 + dist)
因此,如果两个学生的分数相同,则它们的相似度为1。
但这只是一种方法。在proxy
包中编码了48个相似/距离度量,可以使用以下列出:
pr_DB$get_entries()
您甚至可以使用例如
编码自己的指标simil(students,FUN=f)
其中f(x,y)
是一个函数,它将两个向量作为参数,并返回根据需要定义的相似度分数。例如,如果某些课程是“更重要的”,那么这可能是相关的。从某种意义上说,你想要比其他课程更重视这些课程的差异。