y 轴是主队的进球数,x 轴是客队的进球数。例如,0-0 的得分线是 1.21,而 4-3 的得分线是 0.84。我知道主场获胜的概率等于
np.sum(np.tril(match_score_matrix, -1))
抽签的概率等于:
np.sum(np.diag(match_score_matrix))
损失的概率等于:
np.sum(np.triu(match_score_matrix, 1)),
现在,我想知道每个进球差异的概率。在这个矩阵中,以下目标差异结果是可能的 [-6, -5, ..., 0, ..., 15)。如何编写一个循环来计算每个结果的概率?
def get_probabilities(match_score_matrix, max_goals_home, max_goals_away):
return dict({'max_goals_away': np.something,
'-5', np.something,
'-4', np.something,
...
'0', np.diag(match_score_matrix)),
'1', np.something
...
'max_goals_home', np.something })
如何在易于使用的循环中编写它?先感谢您!
考虑使用偏移在np.diagonal
。因为对角线是当主客队之间的进球数相等时,向上偏移是客队比主队高一球时的概率。相反,当主队比客队高一球时,向下偏移是概率。因此,将两个概率相加。
# AWAY ONE GOAL HIGHER
np.sum(np.diagonal(match_score_matrix, offset=1))
# HOME ONE GOAL HIGHER
np.sum(np.diagonal(match_score_matrix, offset=-1))
# AWAY TWO GOALS HIGHER
np.sum(np.diagonal(match_score_matrix, offset=2))
# HOME TWO GOALS HIGHER
np.sum(np.diagonal(match_score_matrix, offset=-2))
...
# AWAY MAX GOALS HIGHER USING array.shape
np.sum(np.diagonal(match_score_matrix, offset=match_score_matrix.shape[0]))
# HOME MAX GOALS HIGHER USING array.shape
np.sum(np.diagonal(match_score_matrix, offset=-match_score_matrix.shape[0]))
对于您需要的字典,请使用字典理解
def get_probabilities(match_score_matrix, max_goals_home, max_goals_away):
# DICTIONARY COMPREHENSION
return {str(i): np.sum(np.diagonal(match_score_matrix, offset=i)) for i in range(-15,15)}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句