是什么导致了 symfit 中的这个警告?

What is causing this warning in 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

这是什么原因造成的?

发生这种情况是因为 symfit 目前总是尝试计算拟合的 coefficient of determination (R^2)。在这种情况下,由于没有数据,SS_res 和 SS_tot 都为零,导致 0/0,因此出现警告并在 fit_results 中产生 nan

我们现在正在向 FitResults 添加额外的智能,这样它就不会首先被计算,但是忽略这个警告是安全的。