1、m students, n courses, 如果两个学生有重复课程就表示similar,重复的越多越similar,问如何根据similar进行排序
A:建hashtable,key是学生名字,value是他选的课,选的课可以存为二进制数(如{“xx”:010010})。然后两个学生的similarity就是其value的余弦相似性(Cosine similarity)。
def Cosine_Similarity(A,B):
numerator, denominator1, denominator2 = 0, 0, 0
for item in range(len(A)):
numerator += A[item] * B[item]
denominator1 += A[item] ** 2
denominator2 += B[item] ** 2
similarity = numerator / ((denominator1**0.5) * (denominator2**0.5))
return (similarity)