Ame*_*ina 10 python scipy pandas scikit-learn
我有两种方法可以对字符串列表进行不同的排序,以及我们可以认为是列表的"正确"排名(即黄金标准).
换一种说法:
ranked_list_of_strings_1 = method_1(list_of_strings)
ranked_list_of_strings_2 = method_2(list_of_strings)
correctly_ranked_list_of_strings # Some permutation of list_of_strings
Run Code Online (Sandbox Code Playgroud)
如何确定哪种方法更好,method_1
并且method_2
是黑盒子?是否有任何方法来衡量这可无论是在SciPy
或scikit-learn
或类似的库?
在我的具体情况下,我实际上有一个数据框,每个方法输出一个分数.重要的不是在方法和真实分数之间的分数差别,但该方法得到的排名权(分数越高意味着所有列更高的排名).
strings scores_method_1 scores_method_2 true_scores
5714 aeSeOg 0.54 0.1 0.8
5741 NQXACs 0.15 0.3 0.4
5768 zsFZQi 0.57 0.7 0.2
Run Code Online (Sandbox Code Playgroud)
您正在寻找标准化折扣累积增益(NDGC).它是搜索引擎排名中常用的度量标准,用于测试结果排名的质量.
这个想法是你测试你的排名(在你的情况下是两种方法),通过点击(在你的演员阵容中的真实排名)反对用户反馈.NDGC将告诉您排名相对于事实的质量.
Python有基于RankEval的模块来实现这个度量标准(如果你想尝试它们,还有其他一些).该回购是在这里,有一个很好的IPython的NB用实例