python - Scipy Curve_Fit 返回值解释

标签 python math statistics scipy curve-fitting

下面是使用 Scipy 中基于线性方程的 Curve_Fit 的示例。我对曲线拟合的一般理解是,它需要绘制随机点并创建一条曲线来显示一系列数据点的“最佳拟合”。我的问题是使用 scipy curve_fit它返回:

"Optimal values for the parameters so that the sum of the squared error of f(xdata, *popt) - ydata is minimized".

这两个值用简单的英语到底意味着什么?谢谢!

import numpy as np
from scipy.optimize import curve_fit
# Creating a function to model and create data
def func(x, a, b):
    return a * x + b
# Generating clean data
x = np.linspace(0, 10, 100)
y = func(x, 1, 2)
# Adding noise to the data
yn = y + 0.9 * np.random.normal(size=len(x))
# Executing curve_fit on noisy data
popt, pcov = curve_fit(func, x, yn)
# popt returns the best fit values for parameters of
# the given model (func).
print(popt)

最佳答案

您要求 SciPy 告诉您通过一组点对 (x, y) 的“最佳”直线。

这是直线方程:

y = a*x + b

直线的斜率为a; y 轴截距为 b

您有两个参数,ab,因此您只需要两个方程即可求解两个未知数。两点定义一条线,对吗?

那么当你有两个以上的点时会发生什么?您无法遍历所有要点。如何选择斜率和截距来获得“最佳”直线?

定义“最佳”的一种方法是计算斜率和截距,以最小化每个 y 值与线上 x 处的预测 y 之差的平方:

error = sum[(y(i) - (a*x(i) + b))^2]

如果您了解微积分,这是一个简单的练习:对误差求一阶导数。 ab 并将它们设置为零。您将得到两个带有两个未知数的方程:ab。您解决它们以获得“最佳”线的系数。

关于python - Scipy Curve_Fit 返回值解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19570235/

相关文章:

python - 使用列表理解返回第一个找到的元素或 None

javascript - 使用 JavaScript 进行财务计算(出了什么问题?)

java - vector 缩放问题

r - 从 r 中的 aov 对象中提取均方值的最佳方法

mysql - 在mysql数据库中存储可变数量的文件下载统计信息

python - scikit-learn cross_val_predict 准确度分数是如何计算的?

python - 如何从采样率 8000Hz 的音频中提取 CQT (librosa)

python - 如何移动/偏移 iloc sum?

python - 算术运算中的暴力搜索算法

r - R 中 plot 和 qplot 中的不同 lowess 曲线