本文整理汇总了Python中symfit.Fit.objective方法的典型用法代码示例。如果您正苦于以下问题:Python Fit.objective方法的具体用法?Python Fit.objective怎么用?Python Fit.objective使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类symfit.Fit
的用法示例。
在下文中一共展示了Fit.objective方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_error_advanced
# 需要导入模块: from symfit import Fit [as 别名]
# 或者: from symfit.Fit import objective [as 别名]
def test_error_advanced(self):
"""
Compare the error propagation of Fit against
NumericalLeastSquares.
Models an example from the mathematica docs and try's to replicate it:
http://reference.wolfram.com/language/howto/FitModelsWithMeasurementErrors.html
"""
data = [
[0.9, 6.1, 9.5], [3.9, 6., 9.7], [0.3, 2.8, 6.6],
[1., 2.2, 5.9], [1.8, 2.4, 7.2], [9., 1.7, 7.],
[7.9, 8., 10.4], [4.9, 3.9, 9.], [2.3, 2.6, 7.4],
[4.7, 8.4, 10.]
]
xdata, ydata, zdata = [np.array(data) for data in zip(*data)]
# errors = np.array([.4, .4, .2, .4, .1, .3, .1, .2, .2, .2])
a = Parameter('a', 3.0)
b = Parameter('b', 0.9)
c = Parameter('c', 5.0)
x = Variable('x')
y = Variable('y')
z = Variable('z')
model = {z: a * log(b * x + c * y)}
const_fit = Fit(model, xdata, ydata, zdata, absolute_sigma=False)
self.assertEqual(len(const_fit.model(x=xdata, y=ydata, a=2, b=2, c=5)), 1)
self.assertEqual(
const_fit.model(x=xdata, y=ydata, a=2, b=2, c=5)[0].shape,
(10,)
)
self.assertEqual(len(const_fit.model.eval_jacobian(x=xdata, y=ydata, a=2, b=2, c=5)), 1)
self.assertEqual(
const_fit.model.eval_jacobian(x=xdata, y=ydata, a=2, b=2, c=5)[0].shape,
(3, 10)
)
self.assertEqual(len(const_fit.model.eval_hessian(x=xdata, y=ydata, a=2, b=2, c=5)), 1)
self.assertEqual(
const_fit.model.eval_hessian(x=xdata, y=ydata, a=2, b=2, c=5)[0].shape,
(3, 3, 10)
)
self.assertEqual(const_fit.objective(a=2, b=2, c=5).shape,
tuple())
self.assertEqual(
const_fit.objective.eval_jacobian(a=2, b=2, c=5).shape,
(3,)
)
self.assertEqual(
const_fit.objective.eval_hessian(a=2, b=2, c=5).shape,
(3, 3)
)
self.assertNotEqual(
const_fit.objective.eval_hessian(a=2, b=2, c=5).dtype,
object
)
const_result = const_fit.execute()
fit = Fit(model, xdata, ydata, zdata, absolute_sigma=False, minimizer=MINPACK)
std_result = fit.execute()
self.assertEqual(const_fit.absolute_sigma, fit.absolute_sigma)
self.assertAlmostEqual(const_result.value(a), std_result.value(a), 4)
self.assertAlmostEqual(const_result.value(b), std_result.value(b), 4)
self.assertAlmostEqual(const_result.value(c), std_result.value(c), 4)
# This used to be a tighter equality test, but since we now use the
# Hessian we actually get a more accurate value from the standard fit
# then for MINPACK. Hence we check if it is roughly equal, and if our
# stdev is greater than that of minpack.
self.assertAlmostEqual(const_result.stdev(a) / std_result.stdev(a), 1, 2)
self.assertAlmostEqual(const_result.stdev(b) / std_result.stdev(b), 1, 1)
self.assertAlmostEqual(const_result.stdev(c) / std_result.stdev(c), 1, 2)
self.assertGreaterEqual(const_result.stdev(a), std_result.stdev(a))
self.assertGreaterEqual(const_result.stdev(b), std_result.stdev(b))
self.assertGreaterEqual(const_result.stdev(c), std_result.stdev(c))