我有一组数据点(下面代码中的 x 和 y),我正在尝试通过我的点创建一条最适合的线性线。我正在使用scipy.optimize.curve_fit
. 我的代码产生了一条线,但不是一条最合适的线。我尝试提供函数模型参数以用于我的渐变和截距,但每次它都会产生完全相同的线,不适合我的数据点。
蓝点是我的数据点,红线应该适合:
如果有人能指出我哪里出错了,我将非常感激:
import numpy as np
import matplotlib.pyplot as mpl
import scipy as sp
import scipy.optimize as opt
x=[1.0,2.5,3.5,4.0,1.1,1.8,2.2,3.7]
y=[6.008,15.722,27.130,33.772,5.257,9.549,11.098,28.828]
trialX = np.linspace(1.0,4.0,1000) #Trial values of x
def f(x,m,c): #Defining the function y(x)=(m*x)+c
return (x*m)+c
popt,pcov=opt.curve_fit(f,x,y) #Returning popt and pcov
ynew=f(trialX,*popt)
mpl.plot(x,y,'bo')
mpl.plot(trialX,ynew,'r-')
mpl.show()