This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def calc_glicko2_rank(df: pd.DataFrame, tau:float, rd_0:float, sigma_0:float = 0.06, date_freq:str = '180D') -> pd.DataFrame: | |
glicko_scorer = Glicko2(tau=tau) | |
fighter_set = set(df['fighter_slog'].unique().tolist() + df['opponent_slog'].unique().tolist()) | |
for fighter in fighter_set: | |
glicko_scorer.add_player(fighter, rd=rd_0, sigma=sigma_0) | |
for group_idx, (date_idx, date_group) in tqdm(enumerate(df.groupby([pd.Grouper(key='date', freq=date_freq)]))): | |
# pre-rating map | |
rating_map = {fname: glicko_scorer[fname].rating for fname in fighter_set} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import math | |
import numpy as np | |
cdef class GlickoRating: | |
cdef public double mu, phi, sigma | |
cdef readonly double elo_scale | |
cdef readonly double glicko_scale | |
cdef public list fights | |
cdef public list scores | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def calc_elo_rank(df: pd.DataFrame) -> pd.DataFrame: | |
elo_scorer = Elo(k = 20) | |
fighter_set = set(df['winner_slog'].unique().tolist() + df['loser_slog'].unique().tolist()) | |
for fighter in fighter_set: | |
elo_scorer.add_player(fighter) | |
elo_f1 = np.zeros((len(df,))) | |
elo_f2 = np.zeros((len(df,))) | |
for rowidx, fs_row in tqdm(enumerate(df.itertuples())): |