今天给大家讲一下Python数据拟合实现最小二乘法的实例分析,可能很多人不太懂。为了让你更好地理解,边肖为你总结了以下内容,希望你能从这篇文章中有所收获。
线性拟合
这个表达还是很简单的。
在某些情况下,我们经常选择自然序列作为自变量。这时,在求自变量的值时,可以使用一些初等数学推论。对于xm,n]的自然序列,有。
#文件名core.py
importnumpayasnp
偏转正方形(x,y):
iflen(x)=2:
#此时x是自然序列。
sx=0.5*(x[1]-x[0] 1)*(x[1] x[0])
ex=sx/(x[1]-x[0] 1)
sx2=((x[1]*(x[1] 1)*(2*x[1] 1))
-(x[0]*(x[0]-1)*(2 * x[0]-1))/6
x=np.array(范围(x[0],x[1] 1))
else:
sx=总和(x)
ex=sx/len(x)
sx2=总和(x**2)
sxy=总和(x*y)
ey=np .均值(y)
a=(sxy-ey*sx)/(sx2-ex*sx)
b=(ey*sx2-sxy*ex)/(sx2-ex*sx)
返回,b,测试它。
x=np.arange(25)
y=x * 15 20np . random . randn(len(x))* 5 # randn产生正态分布噪声。
a,b=core.leastSquare(x,y)
Plt .散点图(x,y)#原始数据散点图。
matplotlib . collections . pathcollectionbjectcatt0x 0000218 debbed c8
Plt.plot(x,a*x b)#拟合直线。
[matplotlib . lines . line 2 objectat0x 00000218 e 0314 fc 8]
从plt.show()获取。
高阶多项式
和以前一样,协议。
代码如下
#传入参数的格式为np.array,n为顺序。
偏转正方形多(x,y,n):
x=[NP . sum(x * * I)for I range(2 * n ^ 1)]
y=NP . array([[NP . sum(y * x * * I)](n ^ 1)]
s=NP . array([X[I : I n 1]for I range(n 1)]
return.linalg.solve (s,y) #的测试结果如下:
x=np.arange(25)
y=x**3 3*x**2 2*x 12
进口核心
core . lestsquarmuletti(x,y,3)
数组([[12。],#这是一个常数项。
[2.],
[3.],
[1.])样品为
多自变量
。
因此,其误差方程可以表示为:
指数函数
它的代码是。
defexpFit(x,y):
y0=y[0:-3]
y1=y[1:-2]
y2=y[2:-1]
b,C=最小平方(y2/y0,y1/y0)
B1=NP . log((B- NP . sqrt(B * * 2 4 * C))/2)
B2=NP . log((B NP . sqrt(B * * 2 4 * C))/2)
X=np.exp(b1-b2)*x
Y=y/np.exp(b2*x)
a1,a2=最小平方(X,Y)
返回1、a2、b1、b2
看完以上,你对Python数据拟合实现最小二乘法的实例分析有进一步的了解吗?如果您想了解更多知识或相关内容,请关注行业资讯频道,感谢您的支持。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/38497.html