scipy.optimize.minimize возвращает [inf]

Я пытаюсь вызвать 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?


person gkeenley    schedule 24.09.2019    source источник


Ответы (1)


Вы вычисляете np.log(LAM = beats = [0]) в poissonNegLogLikelihood(), а log(0) равно -inf. Поэтому мне кажется, что ваша первоначальная догадка betas и есть проблема. Вы должны проверить с адекватными значениями.

person SuperKogito    schedule 24.09.2019
comment
Это было, спасибо! Я изменил начальное условие на 1, и все заработало. - person gkeenley; 25.09.2019