【问题标题】:Why does `scipy.optimize.curve_fit` with only two points raise OptimizeWarning: Covariance of the parameters could not be estimated?为什么只有两点的`scipy.optimize.curve_fit`会引发OptimizeWarning:无法估计参数的协方差?
【发布时间】:2018-12-28 00:43:23
【问题描述】:

为什么这种简单的拟合不起作用?

import numpy as np
from scipy.optimize import curve_fit
exponential = lambda x, a, b: np.exp(a * x + b)
popt, pcov = curve_fit(f=exponential, xdata=[350, 380], ydata=[48, 17], p0=[-0.01, 1])
print("a =", popt[0])
print("b =", popt[1])

输出是:

python-3.4.4\lib\site-packages\scipy\optimize\minpack.py:715:
OptimizeWarning: Covariance of the parameters could not be estimated
category=OptimizeWarning)

a = -0.03459958889505575
b = 15.981057124177402

【问题讨论】:

    标签: python numpy scipy curve-fitting covariance


    【解决方案1】:

    它有效,但在计算 pcov:

    如果解处的雅可比矩阵没有满秩,则“lm”方法返回一个填充有 np.inf 的矩阵。

    这是您的情况,因此您会看到警告消息。

    【讨论】:

    • @muschL 误差是根据您的拟合与数据点的距离来估计的。然而,指数总是可以完美地拟合两个点,因此没有很好的方法来估计误差。
    猜你喜欢
    • 2018-10-26
    • 1970-01-01
    • 2017-11-21
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    相关资源
    最近更新 更多