使用scipy.optimise.minimise()同时执行拟合/最小化操作

2024-04-23 16:57:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用科学优化最小化()最小化对数似然表达式的方法:

param_array = np.array([
            0.5, # beta1 
            0.5  # beta2  
           ])

def f(param_array): 

        great_bayesian = -sum( np.log(binomial.pmf(t_g_c, t_g_t, (param_array[0] + historical_t_g_c)/(param_array[0] + param_array[1] + historical_t_g_t) ) ) )

        return great_bayesian

beta_opt = optimize.minimize(f,param_array,method='SLSQP', constraints=cons)

当我想在单个数据帧上最小化单个可能性并正确确定beta1和beta2的最佳估计时,该方法非常有效。你知道吗

但是,我想同时拟合多个数据帧,并获得beta1和beta2的一组总体最佳估计。你知道吗

我不知道该怎么做,但我确信这一定是个解决了的问题。任何指导都将不胜感激!你知道吗


Tags: 数据方法param表达式defnp对数科学
1条回答
网友
1楼 · 发布于 2024-04-23 16:57:51

可以使用“args”参数将其他参数传递给要最小化的函数。你知道吗

引用:https://docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy.optimize.minimize.html

对于您的示例,您必须重新定义f(…)才能接受要更改的参数。然后把电话转到scipy.最小化提供要作为元组传递给f(…)的附加参数。这里唯一的限制是f(…)需要定义,以便最小化的参数数组是第一个参数。你知道吗

以下是对代码的(未测试)更改。我在您的参数中添加了前缀“some\”,以表明这些参数可以在此处更改。你知道吗

param_array = np.array([
            0.5, # beta1 
            0.5  # beta2  
           ])

def f(param_array, team_great_conv, team_great_tot, historical_team_great_conv, historical_team_great_tot): 

        great_bayesian = -sum( np.log(binomial.pmf(team_great_conv, team_great_tot, (param_array[0] + historical_team_great_conv)/(param_array[0] + param_array[1] + historical_team_great_tot) ) ) )

        return great_bayesian

beta_opt = optimize.minimize(f, param_array,
                             args=(some_team_great_conv,
                                   some_team_great_tot,
                                   some_historical_team_great_conv,
                                   some_historical_team_great_tot,),
                             method='SLSQP', constraints=cons)

相关问题 更多 >