我正在尝试调用scipy.optimize.minimize来最小化函数poissonNegLogLikelihood,该函数的定义如下:
def poissonNegLogLikelihood(lam, y):
Computes the negative log-likelihood for a Poisson random variable.
Inputs:
lam - float or array. Parameter for the poisson distribution.
y - float or array. Observed data.
Outputs:
log_lik - float. The negative log-likelihood for the data (y) with parameter (lam).
Y = np.atleast_1d(y)
LAM = np.atleast_1d(lam)
log_lik = -np.sum(np.multiply(Y,np.log(LAM)) - gammaln(Y+1) - LAM)
return log_lik这个函数运行得很好,但是当我尝试使用它作为scipy.optimize.minimize的输入时,它会返回inf。这就是我传递它的方式:
data = np.array([1.0])
betas = np.array([0])
minimize(poissonNegLogLikelihood,betas,args=(data),jac=False)我是不是用错了scipy.optimize.minimize函数?
发布于 2019-09-25 01:27:54
您在poissonNegLogLikelihood()中计算np.log(LAM = beats = [0]),而log(0)是-inf。因此,在我看来,您最初猜测的betas就是问题所在。您应该使用足够的值进行测试。
https://stackoverflow.com/questions/58085095
复制相似问题