#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.