【发布时间】:2016-04-22 12:06:49
【问题描述】:
我和我的合著者正在尝试使用非线性最小二乘法来估计参数。令人惊讶的是,我们从相同的代码中得到不同的结果。我们在 scipy.optimize 包中使用curve_fit。
我们使用不同的 scipy 版本。版本是否可能导致不同的结果?还是我错过了什么?
curve_fit 可以使用不同的搜索方法吗?不同版本的curve_fit是否使用不同的默认参数?
使用的 scipy 版本分别为 0.15.1 和 0.16.0。抱歉,我很难给出可重复的例子,因为在我的 Macbook 上我只有 scipy 0.16.0。或者有人可以告诉我如何在一台计算机上使用不同版本的 scipy?
【问题讨论】:
-
"我们得到不同的结果......" 他们有多大不同?小的差异可能是由于不同的 scipy 版本,甚至是不同的计算机硬件......
-
@mgilson 是真的吗?我怀疑差异是由版本引起的。但是这个优化过程没有随机性,我们使用了相同的初始条件。差异大到足以引起一些担忧。
-
如果你不能给出一个可重现的例子,你至少应该给我们 scipy 版本。
-
@user3821012 您可以使用
virtualenv创建独立的、自包含的 Python 环境。 -
您的问题是否恰当?通常,多元非线性优化问题通常具有大量的局部最小值,因此容易受到数值不稳定性的影响。因此,不同的计算机(架构)或软件库版本可能会导致不同的结果。一个简单的指标是改变初始条件和边界条件,并检查是否会导致不同的结果。
标签: python optimization scipy least-squares