关于Elopy库win_probs方法计算结果的疑惑求助
关于Elopy库win_probs方法的结果解释
核心逻辑说明
Elopy的win_probs方法用于计算调用该方法的队伍击败对手的期望得分(Elo标准E值),逻辑如下:
- 若
is_home=True,会给调用方法的队伍增加100分的默认主场优势; - 期望得分计算公式为:
E = 1 / (1 + 10 ** ((对手评分 - 当前队伍有效评分) / 400)),其中当前队伍有效评分 = 自身初始评分 + (100 if is_home else 0)
你的代码结果分析
你的代码中,两支队伍初始评分均为默认的1000分:
teama.win_probs(teamb, is_home=True):teama作为调用者,加上100分主场优势后有效评分为1100,代入公式计算得:1 / (1 + 10 ** ((1000 - 1100)/400)) ≈ 0.64这就是teama的期望得分。
teamb.win_probs(teama, is_home=False):teamb作为调用者,无主场优势,有效评分为1000;此时方法不会给对手teama额外加主场分,teama评分仍为1000,代入公式得:1 / (1 + 10 ** ((1000 - 1000)/400)) = 0.5这是teamb在双方无主场优势情况下的期望得分,并非它客场击败teama的真实概率。
纠正你的误解
- 客场队伍获胜概率的正确计算:如果要算teama作为主场时,teamb的获胜期望得分,应该用
1 - teama.win_probs(teamb, is_home=True),结果≈0.36,这才符合主场优势下的概率分布。 - 关于“获胜加平局概率”的猜测:
win_probs返回的不是“获胜+平局概率”,而是期望得分,即获胜概率 + 0.5*平局概率。比如0.64的含义是:长期来看,teama每场比赛的平均得分为0.64(赢一场得1分,平一场得0.5分,输得0分)。
内容的提问来源于stack exchange,提问作者Boröom
相关产品推荐
相关产品推荐

