astropy.modeling
实现了比较方便的模型拟合,但比较鸡肋的是 models
并不储存参数的协方差矩阵。
而 astropy.modeling.fitting.LevMarLSQFitter
是调用 scipy.optimize.leastsq
实现的,可以返回 scipy.optimize.leastsq
返回的参数的协方差矩阵(实际上scipy.optimize.leastsq
返回的并不直接是参数的协方差矩阵,需要进行处理,astropy.modeling.fitting.LevMarLSQFitter
同时给出处理前后的数据)。
文档里的 Notes 做了相关介绍,其他的几个 Fitter 好像都不行
参看:
http://docs.astropy.org/en/stable/api/astropy.modeling.fitting.LevMarLSQFitter.html#astropy.modeling.fitting.LevMarLSQFitter
可如下包装
class LevMarLSQFitter_better(fitting.LevMarLSQFitter):
def __init__(self, *par, **arg):
fitting.LevMarLSQFitter.__init__(self, *par, **arg)
def fit_better(self, *par, **arg):
fitted_model = self(*par, **arg)
return fitted_model, self.fit_info
网友评论