0

我有一个长度为 100 的单个数组的数据集和不确定性。我还有一个长度为 100 的“模型”数组。目标:仅优化该模型数组的一个参数(缩放幅度),以更好地拟合给定不确定性的数据。

到目前为止,我已经尝试过:

def residual(params, x, data, eps_data):
   amp = params['amp'].value
   model = amp * x 
   return (data - model)/eps_data
params = Parameters()
params.add('amp',value=100)
out = minimize(residual,params,args=(mod_array,data_array,unc_array))

然后,我将最佳拟合值幅度与原始模型数组相乘:

fit = params['amp'].value*mod_array

然后,我在原始数据集上绘制拟合图,它看起来非常糟糕,我什至在靠近数据的任何地方都看不到模型。代码/算法有什么问题?

4

1 回答 1

0

看起来它应该工作。但是您没有提供足够的信息来确定。数组的数据类型是什么(它们应该是 dtype numpy.float64 或 numpy.float32 的 numpy ndarrays),你得到什么输出?'amp' 的值在拟合中改变了多少?

请注意,如果您使用的是 numpy 的最新开发版本,您将(并且将来将)需要使用 'out.params['amp']' 以获得最佳拟合值。

于 2015-07-13T03:07:58.943 回答