rwitz commited on
Commit
b74ba04
·
verified ·
1 Parent(s): adb9971

Update elo.py

Browse files
Files changed (1) hide show
  1. elo.py +2 -20
elo.py CHANGED
@@ -1,20 +1,3 @@
1
- import pandas as pd
2
- from datasets import Dataset
3
-
4
- def calculate_elo(old_rating, opponent_rating, score, k_factor):
5
- """
6
- Calculate the new ELO rating for a player.
7
-
8
- :param old_rating: The current ELO rating of the player.
9
- :param opponent_rating: The ELO rating of the opponent.
10
- :param score: The score of the game (1 for win, 0.5 for draw, 0 for loss).
11
- :param k_factor: The K-factor used in ELO rating.
12
- :return: The new ELO rating.
13
- """
14
- expected_score = 1 / (1 + 10 ** ((opponent_rating - old_rating) / 400))
15
- new_rating = old_rating + k_factor * (score - expected_score)
16
- return new_rating
17
-
18
  def update_elo_ratings(ratings_dataset, winner, loser):
19
  # Convert the Hugging Face dataset to a pandas DataFrame
20
  ratings_df = pd.DataFrame(ratings_dataset)
@@ -50,8 +33,7 @@ def update_elo_ratings(ratings_dataset, winner, loser):
50
  loser_k_factor = determine_k_factor(loser_games_played)
51
 
52
  # Calculate new ratings
53
- winner_new_rating = calculate_elo(winner_old_rating, loser_old_rating, 1, winner_k_factor)
54
- loser_new_rating = calculate_elo(loser_old_rating, winner_old_rating, 0, loser_k_factor)
55
 
56
  # Update the DataFrame
57
  ratings_df.loc[ratings_df['bot_name'] == winner, 'elo_rating'] = winner_new_rating
@@ -60,4 +42,4 @@ def update_elo_ratings(ratings_dataset, winner, loser):
60
  # Convert the DataFrame back to a Hugging Face dataset
61
  updated_ratings_dataset = Dataset.from_pandas(ratings_df)
62
 
63
- return updated_ratings_dataset
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  def update_elo_ratings(ratings_dataset, winner, loser):
2
  # Convert the Hugging Face dataset to a pandas DataFrame
3
  ratings_df = pd.DataFrame(ratings_dataset)
 
33
  loser_k_factor = determine_k_factor(loser_games_played)
34
 
35
  # Calculate new ratings
36
+ winner_new_rating, loser_new_rating = elo(winner_old_rating, loser_old_rating, k_factor_winner=winner_k_factor, k_factor_loser=loser_k_factor)
 
37
 
38
  # Update the DataFrame
39
  ratings_df.loc[ratings_df['bot_name'] == winner, 'elo_rating'] = winner_new_rating
 
42
  # Convert the DataFrame back to a Hugging Face dataset
43
  updated_ratings_dataset = Dataset.from_pandas(ratings_df)
44
 
45
+ return updated_ratings_dataset