polyfit函数可以使用最小二乘法将一些点拟合成一条曲线:
numpy.polyfit(x, y, deg)
x: 要拟合点的横坐标;
y: 要拟合点的纵坐标;
deg: 自由度.例如:自由度为2,那么拟合出来的曲线就是二次函数,自由度是3,拟合出来的曲线就是3次函数可。同时,还可以使用poly1d()函数帮我们拼接方程,结果是一样的。
举例说明:
一、画出如下点:
x=np.arange(1,8,0.1)
y=2*np.sin(2*x)+np.random.rand(len(x))
plt.scatter(x,y)
plt.show()
二、通过np.polyfit()与np.poly1d()将点拟合成曲线:
x=np.arange(1,8,0.1)
y=2*np.sin(2*x)+np.random.rand(len(x))
parameter=np.polyfit(x,y,4)
print(parameter)
p = np.poly1d(parameter)
plt.scatter(x,y)
plt.plot(x,p(x))
plt.show()
parameter=np.polyfit(x,y,4),设置自由度为四,也就是四次方函数。
print(parameter) 打印出函数的参数[ 0.03876277 , -0.69470974 , 4.34416326 ,-10.89309068 , 9.22108713],则此函数方程的形式为:
Y=0.03876277 * x ** 4 -0.69470974 * x ** 3 + 4.34416326 * x**2 + -10.89309068*x+9.2210
8713
自由度为4时拟合如图,效果不是很好:
增加自由度为8,拟合曲线靠近大部分点,拟合如图,如此调参,可以得到良好的拟合函数:
-----------------END------------------