Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用scipy优化的python失败了_Python_Scipy_Statistics_Mle - Fatal编程技术网

使用scipy优化的python失败了

使用scipy优化的python失败了,python,scipy,statistics,mle,Python,Scipy,Statistics,Mle,我想用scipy最小化来最小化似然函数。我需要对所有这些函数求和,以得到alpha1,alpha2,alpha3,alpha4,beta1,beta2的最佳值。我的代码是: def infected_prob_lh(params): alpha1,alpha2,alpha3,alpha4,beta1,beta2=params[0], params[1],params[2], params[3],params[4], params[5] return -np.sum([ Nij_3

我想用scipy最小化来最小化似然函数。我需要对所有这些函数求和,以得到alpha1,alpha2,alpha3,alpha4,beta1,beta2的最佳值。我的代码是:

def infected_prob_lh(params):
    alpha1,alpha2,alpha3,alpha4,beta1,beta2=params[0], params[1],params[2], params[3],params[4], params[5]
    return -np.sum([ Nij_339034*np.log(Pj_339034)+ (N_339034-Nij_339034)*np.log(1-Pj_339034),
                  Nij_436000*np.log(Pj_436000)+ (N_436000-Nij_436000)*np.log(1-Pj_436000),
                    Nij_436000*np.log(Pj_436000)+ (N_436000-Nij_436000)*np.log(1-Pj_436000),
                    Nij_817037*np.log(Pj_817037)+ (N_817037-Nij_817037)*np.log(1-Pj_817037),
                    Nij_1282000*np.log(Pj_1282000)+ (N_1282000-Nij_1282000)*np.log(1-Pj_1282000),
                   Nij_4014000*np.log(Pj_4014000)+ (N_4014000-Nij_4014000)*np.log(1-Pj_4014000)])


init_params = [1, 1,1,1,1,1]
minimize(infected_prob_lh,x0=init_params,method='Nelder-Mead')
我明白了:

fun: nan
       message: 'Maximum number of function evaluations has been exceeded.'
          nfev: 1207
           nit: 151
        status: 1
       success: False
             x: array([1., 1., 1., 1., 1., 1.])
我试图设置另一个初始值,但没有成功。它似乎只对return语句中的一个函数有效,但我需要找到所有这些函数之和的最佳值。 乐于助人。
谢谢

您的返回函数没有输入参数。因此,改变参数不会改变输出。在最大迭代次数之后,优化器停止

将返回函数更改为alpha1、alpha2、alpha3、alpha4、beta1、beta2的函数

作为对你评论的回应:

I使用
alpha1,…beta2
内部
Pj_I
变量

我们没有如何定义(读取计算)Pj_i的代码,但可以肯定的是,
Pj_i
是一个具有固定值的变量,因此在极小值的迭代过程中不会更新。
您需要执行某种
Pi_j=calculatePi_j(alpha1,…beta2)
以使用当前
alpha1,…beta2
重新计算值,然后再使用它来计算拟合函数的返回值。

不清楚您的函数在做什么。参数和返回值之间的关系是什么?据我所知,您实际上并没有在函数中的任何位置使用
alpha1,…,beta2
,因此当您调用
minimize(…)
时,算法会更改参数的值,但它实际上并没有改变似然函数的输出值。作为旁注,最小化函数输出中的
nfev
告诉您,它对似然函数进行了1207次评估,而不是一次。我在Pj_I变量中使用alpha1,…beta 2。@nay:变量不能使用参数