给定一个 x 和 y 值数组,以下代码将计算这些数据点的回归曲线。
# calculate polynomial
z = np.polyfit(x, y, 5)
f = np.poly1d(z)
# calculate new x's and y's
x_new = np.linspace(x[0], x[-1], 50)
y_new = f(x_new)
plt.plot(x,y,'o', x_new, y_new)
plt.xlim([x[0]-1, x[-1] + 1 ])
plt.show()
我如何使用上面的公式推导出这条曲线的实际方程?
最佳答案
如果要显示方程式,可以使用sympy
输出latex:
from sympy import S, symbols, printing
from matplotlib import pyplot as plt
import numpy as np
x=np.linspace(0,1,100)
y=np.sin(2 * np.pi * x)
p = np.polyfit(x, y, 5)
f = np.poly1d(p)
# calculate new x's and y's
x_new = np.linspace(x[0], x[-1], 50)
y_new = f(x_new)
x = symbols("x")
poly = sum(S("{:6.2f}".format(v))*x**i for i, v in enumerate(p[::-1]))
eq_latex = printing.latex(poly)
plt.plot(x_new, y_new, label="${}$".format(eq_latex))
plt.legend(fontsize="small")
plt.show()
结果:
关于python - 如何从 Numpy 的 polyfit 推导出方程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39801403/