私は2つのデータフレーム 'matches_df'と 'ratings_df'を持っています。マッチデータフレームは、2人の試合の試合の選手、日付、勝者を記憶する。レーティングデータフレームには、各プレーヤーの現在のレーティングが任意の値から順に格納されます。後で再設定する前に、このフレームを更新したいと思います。関数呼び出し間でPythonリセット可変グローバルデータフレーム
matches_df
date | player_1 | player_2 | winner
1/11 'A' 'B' 'A'
2/11 'C' 'B' 'C'
3/11 'A' 'D' 'A'
4/11 'A' 'C' 'C'
ratings_df
player | rating
'A' 1000
'B' 1000
'C' 1000
'D' 1000
次のようなアルゴリズムの更新レート(sudocode)があります。
def update_ratings(match,parameter):
#(1) use current ratings to predict the likelihood of either player winning the match
#(2) using the outcome of the match to update player ratings
#(3) update the two players current ratings in the global dataframe based on the result of the match.
#(4) Return the square of the forecast's prediction error.
私は、モデルの予測精度における異なるパラメータ値の性能を比較したいと考えています。しかし、私は、「評価」データフレームのコピーを作成するか、関数呼び出し間で格付けデータフレームをリセットすることに苦労しています。私は次のコードを使用して、与えられたパラメータ値の性能を計算しています:
def calc_brier(parameter,matches_df):
#reset dataframe to initial values (1000 for all players)
start_ratings = np.repeat(1000.0,len(unique_players))
ratings_df = pd.DataFrame(data=[start_ratings],columns=unique_players)
brier = 0
for index, row in matches_df.iterrows():
brier += update_ratings(row,parameter)
return brier
しかし、これは正しい結果をもたらしません。グローバル格付けデータフレームは 'calc_brier'関数の呼び出し時にリセットされません。その結果、同じパラメータで複数回呼び出されるとcalc_brier関数が矛盾します。 'calc_brier'を呼び出す前/後にグローバル評価データフレームを正しくリセットするにはどうすればよいですか?あるいは、別の構造体を使用して、異なるパラメータ値のパフォーマンスを比較する最終的な目標を達成しますか?