Module rating.rating.polyrating_accuracy
Classes
class PolyratingAccuracy (clip_value=1e-15, *args, **kwargs)-
Whole history rating system with the accuracy function.
Expand source code
class PolyratingAccuracy(Polyrating): def __init__(self, clip_value=1e-15, *args, **kwargs) -> 'PolyratingAccuracy': """ Whole history rating system with the accuracy function. """ if 'allow_complex_result' in kwargs: del kwargs['allow_complex_result'] super().__init__(*args, **kwargs, clip_value=clip_value, allow_complex_result=True) def win_prob(self, rating1 : float, rating2 : float) -> float: return np.clip(1 / 2 * (1 + rating1 - rating2), self.clip_value, 1 - self.clip_value) def log_win(self, rating1 : float, rating2 : float) -> float: return np.log(self.win_prob(rating1, rating2)) def log_tie(self, rating1 : float, rating2 : float, result : float = 0.5) -> float: return result * np.log(self.win_prob(rating1, rating2)) + (1 - result) * np.log(self.win_prob(rating2, rating1)) def tie_prob(self, rating1 : float, rating2 : float) -> float: return 0 def derivative_log_win(self, rating1 : float, rating2 : float) -> float: win_prob = self.win_prob(rating1, rating2) if win_prob == self.clip_value or win_prob == 1 - self.clip_value: return 0 return 1 / (1 + rating1 - rating2) def second_derivative_log_win(self, rating1 : float, rating2 : float) -> float: win_prob = self.win_prob(rating1, rating2) if win_prob == self.clip_value or win_prob == 1 - self.clip_value: return 0 return - 1 / (1 + rating1 - rating2) ** 2 def derivative_log_loss(self, rating1 : float, rating2 : float) -> float: return - self.derivative_log_win(rating2, rating1) def second_derivative_log_loss(self, rating1 : float, rating2 : float) -> float: return self.second_derivative_log_win(rating2, rating1) def derivative_log_tie(self, rating1 : float, rating2 : float, result : float = 0.5) -> float: return result * self.derivative_log_win(rating1, rating2) + (1 - result) * self.derivative_log_loss(rating1, rating2) def second_derivative_log_tie(self, rating1 : float, rating2 : float, result : float = 0.5) -> float: return result * self.second_derivative_log_win(rating1, rating2) + (1 - result) * self.second_derivative_log_loss(rating1, rating2)Ancestors
Inherited members
Polyrating:add_kwargsapply_armijos_ruleassign_submatrixbreak_condition_player_nonebreak_condition_player_not_nonecompute_expected_scorecompute_expected_score_ratingcompute_final_variances_playercompute_likelihoodcompute_period_updatecompute_tournament_performancederivative_gammaderivative_log_lossderivative_log_tiederivative_log_winderivative_markovderivative_priorextract_periodsfind_classgammagenerate_kwarg_settinggenerate_list_settingsgenerate_settingsget_all_subclassesget_default_ratingsget_input_parametersinitialize_games_per_playersinitialize_ratingsinitialize_shared_derivativesloadload_from_dictload_from_list_settingsload_from_settingslog_priorlog_tielog_winmarkovperiod_updatesavesecond_derivative_gammasecond_derivative_log_losssecond_derivative_log_tiesecond_derivative_log_winsecond_derivative_markovsecond_derivative_priortie_probupdate_playerupdate_shared_ratingswin_prob