当前位置: 首页>>代码示例>>Python>>正文


Python Fit.objective方法代码示例

本文整理汇总了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))
开发者ID:tBuLi,项目名称:symfit,代码行数:79,代码来源:test_constrained.py


注:本文中的symfit.Fit.objective方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。