我有一个数据库,其中包含有关对存储库所做的提交的信息。例如
commit-sha1 | file1 |
commit-sha1 | file2 |
commit-sha2 | file2 |
commit-sha2 | file3 |
,依此类推。基本上,显示sha1更改了文件(file1,file2)和sha2更改了(file2,file3) 现在我想看看是否某些文件是相互关联的,即file1和file2一起提交的机会是多少,等等。 为此,我首先找出了最常见的前50个文件,这些文件给了我
file1 - 1500
file2 - 1423
file3 - 1222..
对于每对文件f1,f2,计算D(f1,f2)= P(f1)* P(f2)/ [Q(f1,f2)– P(f1)* P(f2)]或无穷大,如果Q(f1,f2)<= P(f1)* P(f2) 完成上述操作后,我现在得到了两对文件,它们的D(f1,f2)值如下所示:
two_pair_list = [['file1','file2'], ['file1','file3'] ... ['file49','file50']]
d_value = [3.2,-1,0.12,7.6,-1,...]
当Q(f1,f2)<= P(f1)* P(f2)时,我将-1作为d_value,例如,因为db中没有提交同时包含file1和file3(即Q (file1,file3)= 0),其d_value为-1。 现在假设我具有文件对的d_value列表,如何执行分层聚类以查看哪些文件相互关联? 我相信python的linkage()API会有所帮助,但我不确定如何将其用于此数据。任何帮助表示赞赏 谢谢
答案 0 :(得分:1)