繁体   English   中英

Scipy Curve_Fit返回值说明

[英]Scipy Curve_Fit return value explained

下面是基于线性方程式使用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)

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

这是一条直线方程:

y = a*x + b

线的斜率是a ; y截距为b

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

那么,当您获得两个以上的分数时会发生什么? 您不可能完结所有要点。 您如何选择斜率和截距以给您“最佳”线?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM