【问题标题】:Scipy Curve_Fit return value explainedScipy Curve_Fit 返回值说明
【发布时间】:2013-11-03 09:56:46
【问题描述】:

以下是基于线性方程使用 Scipy 中的 Curve_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)

【问题讨论】:

    标签: python math statistics scipy curve-fitting


    【解决方案1】:

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

    这是一条直线的方程:

    y = a*x + b
    

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

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

    那么当你有两个以上的点时会发生什么?您无法通过所有点。你如何选择斜率和截距来给你“最好”的线?

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-04-26
      • 1970-01-01
      • 2013-07-30
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      相关资源
      最近更新 更多