Что вызывает это предупреждение в symfit?

#python #optimization #scipy #symfit

#python #оптимизация #scipy #symfit

Вопрос:

Рассмотрим этот простой код оптимизации:

 from symfit import *


x1 = 1
x2 = 4
p1, p2 = parameters('p1, p2')
model = p1*p2
constraints = [
    Eq(x1*p1 (x2-x1)*p2, 1),
    Ge(p1, p2),
    Ge(p2, 0)
    ]

fit = Fit(- model, constraints=constraints)
fit_result = fit.execute()
print(fit_result)
  

Это выдает мне следующее предупреждение:

 /home/user/.local/lib/python3.5/site-packages/symfit/core/fit.py:1783: RuntimeWarning: invalid value encountered in double_scalars
  return 1 - SS_res/SS_tot
  

Что является причиной этого?

Ответ №1:

Это происходит потому, что symfit в настоящее время всегда пытается вычислить коэффициент детерминации (R ^ 2) для подгонки. В этом случае, поскольку данных нет, оба SS_res и SS_tot равны нулю, что приводит к 0/0 и, следовательно, к предупреждению и результирующему nan in fit_results .

Теперь мы добавляем дополнительный интеллект к FitResults таким образом, что он не будет вычислен в первую очередь, но это предупреждение безопасно игнорировать.

Комментарии:

1. Спасибо, это очень полезно. Вы можете заметить, что теперь я также создал тег symfit.

2. Я заметил, большое спасибо! По иронии судьбы, ваш вопрос только что дал мне репутацию, необходимую для того, чтобы я мог создать ее сам, но избавил меня от необходимости это делать: P.