使用这里描述的Wilson分数方程http://www.evanmiller.org/how-not-to-sort-by-average-rating.html,我对我的评分项目进行排序。但是,如果一个项目有1张反对票(0张赞成票),它将返回与1000张反对票(0张赞成票)相同的分数(即0分)。在
为了克服这个缺点,我想让Wilson得分为负数,或者也许有人会建议另一种解决方案。
不管怎样,我不知道如何改变这个等式/函数:
def ci_lower_bound(pos, n, confidence):
if n==0: return 0
z = 1.96
phat = 1.0*pos/n
score = (phat + z*z/(2*n) - z*math.sqrt((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n)
return score
其中pos
是积极评级的数量,n
是评级的总数,confidence
是统计置信水平。在
好吧,你总是可以按元组
(wilsonscore, -negative_votes)
排序,因为python对元组进行排序的方式。 Python从不考虑反对票,除非wilsonscore相同。 参见:优点:这个问题的简单解决方案,不需要修改函数,而且很少需要修改代码(因为元组在排序时表现为“自然”)。在
缺点:需要记录反对票。在
从逻辑上讲,你的评分系统必须处理以下情况:
当你缺了0票和0票时,你的票比0多。在
既然你当时有正数和负数,为什么不按照你自己的想法创建一个负的Wilson分数来处理这个问题,记住负数的平方根是复杂的。在
为了避免复杂性,假设反对票是正面的。然后你计算出一个负分项目的“喜欢”程度,并将其乘以-1,就可以把它变成不喜欢它的程度。在
^{pr2}$相关问题 更多 >
编程相关推荐