【问题标题】:How to convert Elo rating to 5 star rating system?如何将 Elo 评级转换为 5 星评级系统?
【发布时间】:2020-03-31 14:49:41
【问题描述】:

我们有一个电子游戏玩家的 Elo 评级系统(如下所示),并希望将其转换为 5 星评级,范围为 [3.00, 5.00]。转换应保持以下四个约束。也就是说,我们要确保评分在玩家之间“分布良好”。

  • 0 - 25 % 的玩家获得 => 3.0 - 3.5
  • 25 - 50 % 的玩家获得 => 3.5 - 4.0
  • 50 - 75 % 的玩家得到 => 4.0 - 4.95
  • 75 - 100 % 的玩家获得 => 4.95 - 5.0

Elo 评级和所需的转换五星评级示例:

elo_ratings = [1295, 1497, 1014, 967, 1021, 1034, 1162, 1198, 1374, 1242, 1292, 1096, 1339, 1365, 1188, 1075, 1344, 1040, 1334, 1513, 1362, 1038, 1177, 1190, 1583, 1551, 1558, 1245, 1202, 1285, 1171, 1223, 1274, 1514, 950]

#ranging from 3 to 5
five_star_ratings = [3.52, 4.10, 3.2, ...]

谁能帮助或提供一些关于数学或实现的信息?

【问题讨论】:

  • 确定这是一个可能的解决方案。但是,如果 Elo 评分是左右倾斜的,那么简单地划分为四个子区间将使大多数玩家处于某个评分。例如,如果 Elo 评分是正确的,可能大多数玩家会得到 [4.5, 5.0] 评分。但是我们希望在@JohnColeman 的玩家之间创造一个良好的评分分布,谢谢

标签: python list math rating percentile


【解决方案1】:

为此,您可以在 numpy 中使用几个函数 - np.percentilenp.interp

代码:

import numpy as np

elo_ratings = [1295, 1497, 1014, 967, 1021, 1034, 1162, 1198, 1374, 1242, 1292, 1096, 1339, 1365, 1188, 1075, 1344, 1040, 1334, 1513, 1362, 1038, 1177, 1190, 1583, 1551, 1558, 1245, 1202, 1285, 1171, 1223, 1274, 1514, 950]

rankings = [3.0, 3.5, 4.0, 4.95, 5.0]

boundaries = np.percentile(elo_ratings, [0, 25, 50, 75, 100])

ratings = np.interp(elo_ratings, boundaries, rankings)

输出

>>> ratings
array([4.4536036 , 4.98130435, 3.17877095, 3.04748603, 3.19832402,
       3.23463687, 3.6460177 , 3.80530973, 4.95456522, 4.        ,
       4.42792793, 3.40782123, 4.83018018, 4.9526087 , 3.76106195,
       3.34916201, 4.87297297, 3.25139665, 4.78738739, 4.98478261,
       4.95195652, 3.24581006, 3.71238938, 3.7699115 , 5.        ,
       4.99304348, 4.99456522, 4.02567568, 3.82300885, 4.36801802,
       3.68584071, 3.9159292 , 4.27387387, 4.985     , 3.        ])

【讨论】:

  • 非常接近,谢谢@CDJB,你能建议范围吗,因为我从直方图中得到了 [4.75, 5.0] 范围内的很多玩家
  • 这完全取决于您 - 您可以更改星级边界 (rankings = [3.0, 3.5, 4.0, 4.95, 5.0]) 和百分位数边界 ([0, 25, 50, 75, 100]) 以匹配您希望数据具有的分布。
  • 嗯,是的,因为您有 25% 的玩家评分从 4.95 到 5。您希望得到什么结果?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多