Python重置函数调用之间的可变全局数据框



我有两个dataframes,'matches_df'和'ratings_df'。该匹配框架存储了两个玩家游戏的比赛的玩家,日期和获胜者。额定数据帧将以任意值开始存储当前评级。我想更新此框架,然后再重置它。

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

i具有执行以下(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函数是不一致的。在调用" calc_brier"之前/之后,我该怎么做才能正确重置全局评分数据框,或者使用替代结构来实现我比较不同参数值的性能的最终目标?

如果我使用字典而不是dataframe来存储评分,则可以使用。这是有效的版本(具有评分DF现在是字典,名称为键和评级为1000时的值)。不确定原始代码怎么了。

def calc_brier(parameter):
    for player in unique_players:
        ratings_dict[player]=1000.0
    brier = 0
    for index, row in matches_df.iterrows():
        brier += update_ratings(row,k_factor)
    return brier

相关内容

  • 没有找到相关文章

最新更新