📅  最后修改于: 2023-12-03 15:19:29.724000             🧑  作者: Mango
拟合函数是在给定数据点的情况下,拟合一个函数以描述数据的方法。在Python中,我们可以使用NumPy和SciPy库中的函数进行拟合。本文将介绍Python中的拟合函数及其用法。
在NumPy库中,我们可以使用polyfit()
函数进行多项式拟合。它的用法如下:
import numpy as np
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 3, 5, 8, 13])
# 多项式拟合(二次方程)
coefficients = np.polyfit(x, y, 2)
print(coefficients)
# 输出: [ 0.85714286 -3.57142857 6.71428571]
# 拟合函数
f = np.poly1d(coefficients)
print(f)
# 输出: 2
# 0.8571 x - 3.571 x + 6.714
其中,polyfit(x, y, degree)
函数中的x
和y
参数分别为数据点的自变量和因变量,degree
参数为拟合的多项式次数。polyfit()
函数会返回一个数组,其中包括多项式系数从高到低排列。我们可以使用poly1d()
函数将多项式系数转换为拟合函数。
在SciPy库中,我们可以使用curve_fit()
函数进行曲线拟合。它的用法如下:
from scipy.optimize import curve_fit
import numpy as np
import matplotlib.pyplot as plt
def f(x, a, b, c):
return a*np.exp(-b*x) + c
x = np.array([0, 1, 2, 3, 4, 5])
y = np.array([2.1, 1.6, 1.2, 0.9, 0.5, 0.2])
# 曲线拟合
popt, pcov = curve_fit(f, x, y)
print(popt)
# 输出: [2.18802979 0.41650468 0.13686917]
# 拟合函数
xfine = np.linspace(0, 5, 100)
yfine = f(xfine, *popt)
# 绘制拟合曲线
plt.plot(x, y, 'o', color='black')
plt.plot(xfine, yfine, color='red')
plt.show()
其中,curve_fit()
函数中的f
参数为拟合函数的定义,x
和y
参数为数据点的自变量和因变量。curve_fit()
函数会返回最佳拟合参数列表popt
和协方差矩阵pcov
。我们将最佳拟合参数传递给定义的拟合函数f
,并根据计算得到的拟合曲线绘制图表。
Python中的拟合函数有多种类型,可以应用于不同的数据集。我们可以根据需要选择适当的拟合函数,从而更好地描述数据。需要注意的是,使用拟合函数进行预测时,我们应该谨慎以待并考虑误差范围。