【问题标题】:scipy.optimize.least_squares return of only the solutionscipy.optimize.least_squares 仅返回解决方案
【发布时间】:2018-10-06 19:55:04
【问题描述】:

我正在尝试使用Lest Square Optimization 函数求解一组线性方程。由于我必须使用解向量 x 进行进一步计算,因此我只想返回 x 而不是其余的。 我刚开始使用 Python,所以我不知道,我怎么能输入代码,我只得到 x 而不是整个返回

我已经尝试过类似的代码:

y= spo.least_squares(test_function, x0) [0]

但这对我没有任何作用。

你能帮帮我吗?

【问题讨论】:

    标签: python-3.x optimization scipy


    【解决方案1】:

    scipy.optimize.least_squares 的文档指出:

    返回:OptimizeResult,定义了以下字段:

    x : ndarray, 形状 (n,)

    找到解决方案。

    ...

    这意味着您需要按名称访问结果字段。要仅获取x,这应该可以:

    y = spo.least_squares(test_function, x0).x
    

    但是,我不想鼓励这种用法。如果优化由于某种原因失败,你永远不会知道。所以除非你绝对确定它不会失败,或者你不在乎它是否失败,否则不要使用这种模式。

    最好编写一个处理错误处理并在成功时转发x 的包装器:

    def my_lsq(*args, **kwargs):
        result = spo.least_squares(*args, **kwargs)
    
        if result.success:
            return result.x
        else:
            print(result)
            raise RuntimeError(result.message)
    

    可以像y = my_lsq(test_function, x0)一样简单地使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 2018-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多