【问题标题】:Different scipy versions give different results for curve_fit不同的 scipy 版本为 curve_fit 给出不同的结果
【发布时间】: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


【解决方案1】:

新版本中总是可能存在改进/错误。如果版本之间有修复,您应该从版本说明中找到它:http://docs.scipy.org/doc/scipy/reference/release.0.16.0.html

您还可以使用http://conda.pydata.org/docs/using/envs.html 轻松安装不同版本的 SciPy。可以从https://www.continuum.io/downloads获取

【讨论】:

    猜你喜欢
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    • 2016-05-06
    • 2023-03-18
    • 2020-08-24
    • 2018-11-28
    相关资源
    最近更新 更多