def ts_update_error(x, rA1, rA2, rB1, rB2, scoreA): (beta, tau, dp) = x env = trueskill.TrueSkill(beta=beta, tau=tau, draw_probability=dp, backend='mpmath') tss = TrueSkillSystem('trueskill', env) (rAp, rBp) = tss.rate2p(rA1, rB1, scoreA) err = math.sqrt(distance(rAp, rA2)**2 + distance(rBp, rB2)**2) return err
# Test it on a third game goko_env = trueskill.TrueSkill(mu=mu0, sigma=sigma0, beta=beta, tau=tau, draw_probability=dp, backend='mpmath') goko_tss = TrueSkillSystem('Goko', goko_env) # Game data for two experienced players with similar ratings # Initial ratings print() print('Testing Parameters on Game 3...') rA1 = Rating(6789.036432492558, 262.8329415491707) rB1 = Rating(7108.43720451577, 266.9581590879031) scoreA = 1 # Post-game ratings rA2 = Rating(6822.354187108161, 262.6577478580567) rB2 = Rating(7074.076798465825, 266.6845904766116) (rAx, rBx) = goko_tss.rate2p(rA1, rB1, scoreA) error = distance(rA2, rAx)**2 + distance(rB2, rBx)**2 print('Initial ratings:') print(' A: %7.2f +/- %5.2f' % (rA1.mu, rA1.sigma)) print(' B: %7.2f +/- %5.2f' % (rB1.mu, rB1.sigma)) print('Expected post-game ratings:') print(' A: %7.2f +/- %5.2f' % (rAx.mu, rAx.sigma)) print(' B: %7.2f +/- %5.2f' % (rBx.mu, rBx.sigma)) print('Observed post-game ratings:') print(' A: %7.2f +/- %5.2f' % (rA2.mu, rA2.sigma)) print(' B: %7.2f +/- %5.2f' % (rB2.mu, rB2.sigma)) print('Rating prediction error: %6.4f' % error)