首页 文章

Scipy Curve_Fit返回值解释

提问于
浏览
2

下面是基于线性方程式使用Scipy的Curve_Fit的示例 . 我对曲线拟合的理解一般是它需要一个随机点图并创建一条曲线来显示"best fit"到一系列数据点 . 我的问题是使用scipy curve_fit它返回:

“参数的最佳值,以便f(xdata,* popt) - ydata的平方误差之和最小化” .

这两个值到底用简单的英语究竟是什么意思?谢谢!

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)

1 回答

  • 4

    你要求SciPy通过一组点(x,y)告诉你“最佳”线 .

    这是一条直线的等式:

    y = a*x + b
    

    线的斜率是 a ; y轴截距是 b .

    你有两个参数, ab ,所以你只需要两个方程来解决两个未知数 . 两点定义一条线,对吗?

    那么当你有两点以上时会发生什么?你无法完成所有要点 . 你如何选择坡度和截距来给你"best"线?

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

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

    如果你知道微积分,这是一个简单的练习:取错误的第一个导数w.r.t. ab 并将它们设置为零 . 你将有两个带有两个未知数的方程, ab . 你解决它们来获得"best"线的系数 .

相关问题