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_kwargs
apply_armijos_rule
assign_submatrix
break_condition_player_none
break_condition_player_not_none
compute_expected_score
compute_expected_score_rating
compute_final_variances_player
compute_likelihood
compute_period_update
compute_tournament_performance
derivative_gamma
derivative_log_loss
derivative_log_tie
derivative_log_win
derivative_markov
derivative_prior
extract_periods
find_class
gamma
generate_kwarg_setting
generate_list_settings
generate_settings
get_all_subclasses
get_default_ratings
get_input_parameters
initialize_games_per_players
initialize_ratings
initialize_shared_derivatives
load
load_from_dict
load_from_list_settings
load_from_settings
log_prior
log_tie
log_win
markov
period_update
save
second_derivative_gamma
second_derivative_log_loss
second_derivative_log_tie
second_derivative_log_win
second_derivative_markov
second_derivative_prior
tie_prob
update_player
update_shared_ratings
win_prob