optimize.minimize函数,Jupyter笔记本和python中的区别?

时间:2019-04-19 13:25:15

标签: python optimization scipy jupyter-notebook minimize

我正在编写一个代码,该代码需要一些数据,并使用具有5个未知参数的模型拟合数据。

我给出了这些参数的一些初始值。我使用optimize.minimize函数将数据和模型(chi ^ 2函数)之间的差异最小化,以获得这些参数的最佳拟合值。

我在Jupyter笔记本和python脚本中运行代码。但是,结果不同。 Jupyter笔记本电脑更贴合身体。在python脚本中,拟合度不是很好,未知参数的结果值与初始值似乎没有太大变化(某些参数保持不变)

我尝试查看了Jupyter(0.19.1)和python(0.18.0)中安装的optimize.minimize函数的两个不同版本的文档。

我检查了参数的值,但是两个函数的值都相同(都是由我自己设置的,并且是默认值)。

可能性函数:

def ds_lnlike(par, logm, d, d_err):
    logms, ds1, ds2, a1, a2 = par     
    model= np.log(10)*(ds1*10**((a1 + 1)*(logm - logms)) + ds2*10**((a2 +1)*(logm - logms)))/np.e**(10**(logm - logms))
    return -0.5*np.sum(((d-model)**2)/d_err**2)

optimize.minimize:

nll = lambda *args: -model.ds_lnlike(*args) 
result = op.minimize(nll, [logms[j], ds1[j], ds2[j], a1[j], a2[j]], args=(x, y, dy), method='TNC', bounds = ((7,13),(0, 0.1),(0, 0.1), (-2, 4), (-2, -1)), tol=1.0e-4)
logms[j], ds1[j], ds2[j], a1[j], a2[j] = result["x"]

初始值:10.7 1.0e-3 0.5e-3 -0.5 -1.5

Jupyter值:1.07708741e+01, 6.59697230e-03, 9.48211306e-04, -3.37329546e-01, -1.57843904e+00

python值:10.699999999999999, 0.0062248066587528919, 0.0012695745516126539, -0.5, -1.5

0 个答案:

没有答案