0

我有这个数据:

Game 1: 7.0/10.0, Reviewed: 1000 times
Game 2: 7.5/10.0, Reviewed: 3000 times
Game 3: 8.9/10.0, Reviewed: 140,000 times
Game 4: 10.0/10.0 Reviewed: 5 times
.
.
. 

我想以某种方式操纵这些数据,使每个评级都反映它被审查了多少次。

例如,第 3 场比赛的重量应该比第 4 场比赛重一点,因为它已经被审查得更多。第二场比赛的 7 应该比第一场比赛的 7 权重更大。

是否有适当的功能来进行这种缩放?以这样的方式

ScaledGameRating = OldGameRating *(一些指数函数?)

4

3 回答 3

1

如何简单地将平均分数标准化(即减去 5,评分区间的中点)并乘以评论数量?这将根据评论的数量对正分或负分进行加权。

使用这种方法,您可以获得以下四场比赛的值:

Game 1:     2,000  (7-5)*1000
Game 2:     7,500  (7.5-5)*3000
Game 3:   546,000  (8.9-5)*140000
Game 4:        25  (10-5)*5

规范化对负面评价的游戏效果很好,因为具有大量负面 (<5) 评论的游戏不会击败具有少量正面 (>5) 评论的游戏。如果您使用绝对分数而不进行归一化,情况就不会如此。

于 2012-12-06T04:57:45.993 回答
0

你可以做 :

查找总评论

对于 10 分中的评分,您只需获得
游戏 x 评分:((游戏 x 评论次数)/(总评论))* 10

会给你满分 10 分。这是在所有游戏中审查的特定游戏的权重。

于 2012-12-06T05:00:58.477 回答
0

我对这个问题的看法是不同的。考虑到如果评论数量较少,剩余的评论是未知的,并且可能在 1 到 10 之间的任何地方。所以我们可以在缺失的范围内进行随机分布,并找到整个最大评论群体的平均值

max_freq = max(rating, key = itemgetter(1))[-1]
>>> for r,f in rating:
    missing = max_freq - f
    actual_rating = r
    if missing:
        actual_rating = sum(randint(1,10) for e in range(missing))/ (10.0*missing)
    print "Original Rating {}, Scaled Rating {}".format(r, actual_rating)


Original Rating 0.7, Scaled Rating 0.550225179856
Original Rating 0.75, Scaled Rating 0.550952554745
Original Rating 0.89, Scaled Rating 0.89
Original Rating 1, Scaled Rating 0.54975249116)


Original Rating 0.7, Scaled Rating 0.550576978417
Original Rating 0.75, Scaled Rating 0.549582481752
Original Rating 0.89, Scaled Rating 0.89
Original Rating 1, Scaled Rating 0.550458230651
于 2012-12-06T05:34:45.847 回答